Browse Source
bpo-13611: C14N 2.0 implementation for ElementTree (GH-12966)
bpo-13611: C14N 2.0 implementation for ElementTree (GH-12966)
* Implement C14N 2.0 as a new canonicalize() function in ElementTree. Missing features: - prefix renaming in XPath expressions (tag and attribute text is supported) - preservation of original prefixes given redundant namespace declarationspull/13053/head
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
60 changed files with 920 additions and 0 deletions
-
60Doc/library/xml.etree.elementtree.rst
-
4Doc/whatsnew/3.8.rst
-
229Lib/test/test_xml_etree.py
-
4Lib/test/xmltestdata/c14n-20/c14nComment.xml
-
3Lib/test/xmltestdata/c14n-20/c14nDefault.xml
-
4Lib/test/xmltestdata/c14n-20/c14nPrefix.xml
-
7Lib/test/xmltestdata/c14n-20/c14nPrefixQname.xml
-
8Lib/test/xmltestdata/c14n-20/c14nPrefixQnameXpathElem.xml
-
6Lib/test/xmltestdata/c14n-20/c14nQname.xml
-
6Lib/test/xmltestdata/c14n-20/c14nQnameElem.xml
-
7Lib/test/xmltestdata/c14n-20/c14nQnameXpathElem.xml
-
4Lib/test/xmltestdata/c14n-20/c14nTrim.xml
-
6Lib/test/xmltestdata/c14n-20/doc.dtd
-
5Lib/test/xmltestdata/c14n-20/doc.xsl
-
14Lib/test/xmltestdata/c14n-20/inC14N1.xml
-
11Lib/test/xmltestdata/c14n-20/inC14N2.xml
-
18Lib/test/xmltestdata/c14n-20/inC14N3.xml
-
13Lib/test/xmltestdata/c14n-20/inC14N4.xml
-
12Lib/test/xmltestdata/c14n-20/inC14N5.xml
-
2Lib/test/xmltestdata/c14n-20/inC14N6.xml
-
4Lib/test/xmltestdata/c14n-20/inNsContent.xml
-
3Lib/test/xmltestdata/c14n-20/inNsDefault.xml
-
6Lib/test/xmltestdata/c14n-20/inNsPushdown.xml
-
3Lib/test/xmltestdata/c14n-20/inNsRedecl.xml
-
4Lib/test/xmltestdata/c14n-20/inNsSort.xml
-
4Lib/test/xmltestdata/c14n-20/inNsSuperfluous.xml
-
3Lib/test/xmltestdata/c14n-20/inNsXml.xml
-
6Lib/test/xmltestdata/c14n-20/out_inC14N1_c14nComment.xml
-
4Lib/test/xmltestdata/c14n-20/out_inC14N1_c14nDefault.xml
-
11Lib/test/xmltestdata/c14n-20/out_inC14N2_c14nDefault.xml
-
1Lib/test/xmltestdata/c14n-20/out_inC14N2_c14nTrim.xml
-
14Lib/test/xmltestdata/c14n-20/out_inC14N3_c14nDefault.xml
-
14Lib/test/xmltestdata/c14n-20/out_inC14N3_c14nPrefix.xml
-
1Lib/test/xmltestdata/c14n-20/out_inC14N3_c14nTrim.xml
-
10Lib/test/xmltestdata/c14n-20/out_inC14N4_c14nDefault.xml
-
2Lib/test/xmltestdata/c14n-20/out_inC14N4_c14nTrim.xml
-
3Lib/test/xmltestdata/c14n-20/out_inC14N5_c14nDefault.xml
-
1Lib/test/xmltestdata/c14n-20/out_inC14N5_c14nTrim.xml
-
1Lib/test/xmltestdata/c14n-20/out_inC14N6_c14nDefault.xml
-
4Lib/test/xmltestdata/c14n-20/out_inNsContent_c14nDefault.xml
-
4Lib/test/xmltestdata/c14n-20/out_inNsContent_c14nPrefixQnameXpathElem.xml
-
4Lib/test/xmltestdata/c14n-20/out_inNsContent_c14nQnameElem.xml
-
4Lib/test/xmltestdata/c14n-20/out_inNsContent_c14nQnameXpathElem.xml
-
3Lib/test/xmltestdata/c14n-20/out_inNsDefault_c14nDefault.xml
-
3Lib/test/xmltestdata/c14n-20/out_inNsDefault_c14nPrefix.xml
-
6Lib/test/xmltestdata/c14n-20/out_inNsPushdown_c14nDefault.xml
-
6Lib/test/xmltestdata/c14n-20/out_inNsPushdown_c14nPrefix.xml
-
3Lib/test/xmltestdata/c14n-20/out_inNsRedecl_c14nDefault.xml
-
3Lib/test/xmltestdata/c14n-20/out_inNsRedecl_c14nPrefix.xml
-
4Lib/test/xmltestdata/c14n-20/out_inNsSort_c14nDefault.xml
-
4Lib/test/xmltestdata/c14n-20/out_inNsSort_c14nPrefix.xml
-
4Lib/test/xmltestdata/c14n-20/out_inNsSuperfluous_c14nDefault.xml
-
4Lib/test/xmltestdata/c14n-20/out_inNsSuperfluous_c14nPrefix.xml
-
3Lib/test/xmltestdata/c14n-20/out_inNsXml_c14nDefault.xml
-
3Lib/test/xmltestdata/c14n-20/out_inNsXml_c14nPrefix.xml
-
3Lib/test/xmltestdata/c14n-20/out_inNsXml_c14nPrefixQname.xml
-
3Lib/test/xmltestdata/c14n-20/out_inNsXml_c14nQname.xml
-
1Lib/test/xmltestdata/c14n-20/world.txt
-
331Lib/xml/etree/ElementTree.py
-
2Misc/NEWS.d/next/Library/2019-04-26-10-10-34.bpo-13611.XEF4bg.rst
@ -0,0 +1,4 @@ |
|||
<dsig:CanonicalizationMethod xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:c14n2="http://www.w3.org/2010/xml-c14n2" Algorithm="http://www.w3.org/2010/xml-c14n2"> |
|||
<c14n2:IgnoreComments>true</c14n2:IgnoreComments> |
|||
</dsig:CanonicalizationMethod> |
|||
|
|||
@ -0,0 +1,3 @@ |
|||
<dsig:CanonicalizationMethod xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" Algorithm="http://www.w3.org/2010/xml-c14n2"> |
|||
</dsig:CanonicalizationMethod> |
|||
|
|||
@ -0,0 +1,4 @@ |
|||
<dsig:CanonicalizationMethod xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:c14n2="http://www.w3.org/2010/xml-c14n2" Algorithm="http://www.w3.org/2010/xml-c14n2"> |
|||
<c14n2:PrefixRewrite>sequential</c14n2:PrefixRewrite> |
|||
</dsig:CanonicalizationMethod> |
|||
|
|||
@ -0,0 +1,7 @@ |
|||
<dsig:CanonicalizationMethod xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:c14n2="http://www.w3.org/2010/xml-c14n2" Algorithm="http://www.w3.org/2010/xml-c14n2"> |
|||
<c14n2:PrefixRewrite>sequential</c14n2:PrefixRewrite> |
|||
<c14n2:QNameAware> |
|||
<c14n2:QualifiedAttr Name="type" NS="http://www.w3.org/2001/XMLSchema-instance"/> |
|||
</c14n2:QNameAware> |
|||
</dsig:CanonicalizationMethod> |
|||
|
|||
@ -0,0 +1,8 @@ |
|||
<dsig:CanonicalizationMethod xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:c14n2="http://www.w3.org/2010/xml-c14n2" Algorithm="http://www.w3.org/2010/xml-c14n2"> |
|||
<c14n2:PrefixRewrite>sequential</c14n2:PrefixRewrite> |
|||
<c14n2:QNameAware> |
|||
<c14n2:Element Name="bar" NS="http://a"/> |
|||
<c14n2:XPathElement Name="IncludedXPath" NS="http://www.w3.org/2010/xmldsig2#"/> |
|||
</c14n2:QNameAware> |
|||
</dsig:CanonicalizationMethod> |
|||
|
|||
@ -0,0 +1,6 @@ |
|||
<dsig:CanonicalizationMethod xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:c14n2="http://www.w3.org/2010/xml-c14n2" Algorithm="http://www.w3.org/2010/xml-c14n2"> |
|||
<c14n2:QNameAware> |
|||
<c14n2:QualifiedAttr Name="type" NS="http://www.w3.org/2001/XMLSchema-instance"/> |
|||
</c14n2:QNameAware> |
|||
</dsig:CanonicalizationMethod> |
|||
|
|||
@ -0,0 +1,6 @@ |
|||
<dsig:CanonicalizationMethod xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:c14n2="http://www.w3.org/2010/xml-c14n2" Algorithm="http://www.w3.org/2010/xml-c14n2"> |
|||
<c14n2:QNameAware> |
|||
<c14n2:Element Name="bar" NS="http://a"/> |
|||
</c14n2:QNameAware> |
|||
</dsig:CanonicalizationMethod> |
|||
|
|||
@ -0,0 +1,7 @@ |
|||
<dsig:CanonicalizationMethod xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:c14n2="http://www.w3.org/2010/xml-c14n2" Algorithm="http://www.w3.org/2010/xml-c14n2"> |
|||
<c14n2:QNameAware> |
|||
<c14n2:Element Name="bar" NS="http://a"/> |
|||
<c14n2:XPathElement Name="IncludedXPath" NS="http://www.w3.org/2010/xmldsig2#"/> |
|||
</c14n2:QNameAware> |
|||
</dsig:CanonicalizationMethod> |
|||
|
|||
@ -0,0 +1,4 @@ |
|||
<dsig:CanonicalizationMethod xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:c14n2="http://www.w3.org/2010/xml-c14n2" Algorithm="http://www.w3.org/2010/xml-c14n2"> |
|||
<c14n2:TrimTextNodes>true</c14n2:TrimTextNodes> |
|||
</dsig:CanonicalizationMethod> |
|||
|
|||
@ -0,0 +1,6 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
|
|||
<!ELEMENT doc (#PCDATA)> |
|||
|
|||
|
|||
|
|||
@ -0,0 +1,5 @@ |
|||
<?xml version="1.0"?> |
|||
<xsl:stylesheet version="1.0" |
|||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" |
|||
> |
|||
</xsl:stylesheet> |
|||
@ -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 --> |
|||
@ -0,0 +1,11 @@ |
|||
<doc> |
|||
<clean> </clean> |
|||
<dirty> A B </dirty> |
|||
<mixed> |
|||
A |
|||
<clean> </clean> |
|||
B |
|||
<dirty> A B </dirty> |
|||
C |
|||
</mixed> |
|||
</doc> |
|||
@ -0,0 +1,18 @@ |
|||
<!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> |
|||
@ -0,0 +1,13 @@ |
|||
<!DOCTYPE doc [ |
|||
<!ATTLIST normId id ID #IMPLIED> |
|||
<!ATTLIST normNames attr NMTOKENS #IMPLIED> |
|||
]> |
|||
<doc> |
|||
<text>First line
 Second line</text> |
|||
<value>2</value> |
|||
<compute><![CDATA[value>"0" && value<"10" ?"valid":"error"]]></compute> |
|||
<compute expr='value>"0" && value<"10" ?"valid":"error"'>valid</compute> |
|||
<norm attr=' '   
	 ' '/> |
|||
<normNames attr=' A   
	 B '/> |
|||
<normId id=' '  
	 ' '/> |
|||
</doc> |
|||
@ -0,0 +1,12 @@ |
|||
<!DOCTYPE doc [ |
|||
<!ATTLIST doc attrExtEnt CDATA #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) --> |
|||
@ -0,0 +1,2 @@ |
|||
<?xml version="1.0" encoding="ISO-8859-1"?> |
|||
<doc>©</doc> |
|||
@ -0,0 +1,4 @@ |
|||
<a:foo xmlns:a="http://a" xmlns:b="http://b" xmlns:child="http://c" xmlns:soap-env="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> |
|||
<a:bar>xsd:string</a:bar> |
|||
<dsig2:IncludedXPath xmlns:dsig2="http://www.w3.org/2010/xmldsig2#">/soap-env:body/child::b:foo[@att1 != "c:val" and @att2 != 'xsd:string']</dsig2:IncludedXPath> |
|||
</a:foo> |
|||
@ -0,0 +1,3 @@ |
|||
<foo xmlns:a="http://a" xmlns:b="http://b"> |
|||
<b:bar b:att1="val" att2="val"/> |
|||
</foo> |
|||
@ -0,0 +1,6 @@ |
|||
<a:foo xmlns:a="http://a" xmlns:b="http://b" xmlns:c="http://c"> |
|||
<b:bar/> |
|||
<b:bar/> |
|||
<b:bar/> |
|||
<a:bar b:att1="val"/> |
|||
</a:foo> |
|||
@ -0,0 +1,3 @@ |
|||
<foo xmlns:a="http://z3" xmlns:b="http://z2" a:att1="val1" b:att2="val2"> |
|||
<bar xmlns="http://z0" xmlns:a="http://z2" a:att1="val1" b:att2="val2" xmlns:b="http://z3" /> |
|||
</foo> |
|||
@ -0,0 +1,4 @@ |
|||
<a:foo xmlns:a="http://z3" xmlns:b="http://z2" b:att1="val1" c:att3="val3" b:att2="val2" xmlns:c="http://z1" xmlns:d="http://z0"> |
|||
<c:bar/> |
|||
<c:bar d:att3="val3"/> |
|||
</a:foo> |
|||
@ -0,0 +1,4 @@ |
|||
<foo xmlns:a="http://z0" xmlns:b="http://z0" a:att1="val1" b:att2="val2" xmlns="http://z0"> |
|||
<c:bar xmlns:a="http://z0" xmlns:c="http://z0" c:att3="val3"/> |
|||
<d:bar xmlns:d="http://z0"/> |
|||
</foo> |
|||
@ -0,0 +1,3 @@ |
|||
<foo xmlns="http://z0" xml:id="23"> |
|||
<bar xsi:type="xsd:string" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">data</bar> |
|||
</foo> |
|||
@ -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 --> |
|||
@ -0,0 +1,4 @@ |
|||
<?xml-stylesheet href="doc.xsl" |
|||
type="text/xsl" ?> |
|||
<doc>Hello, world!</doc> |
|||
<?pi-without-data?> |
|||
@ -0,0 +1,11 @@ |
|||
<doc> |
|||
<clean> </clean> |
|||
<dirty> A B </dirty> |
|||
<mixed> |
|||
A |
|||
<clean> </clean> |
|||
B |
|||
<dirty> A B </dirty> |
|||
C |
|||
</mixed> |
|||
</doc> |
|||
@ -0,0 +1 @@ |
|||
<doc><clean></clean><dirty>A B</dirty><mixed>A<clean></clean>B<dirty>A B</dirty>C</mixed></doc> |
|||
@ -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> |
|||
<e7 xmlns="http://www.ietf.org"> |
|||
<e8 xmlns=""> |
|||
<e9 attr="default"></e9> |
|||
</e8> |
|||
</e7> |
|||
</e6> |
|||
</doc> |
|||
@ -0,0 +1,14 @@ |
|||
<n0:doc xmlns:n0=""> |
|||
<n0:e1></n0:e1> |
|||
<n0:e2></n0:e2> |
|||
<n0:e3 id="elem3" name="elem3"></n0:e3> |
|||
<n0:e4 id="elem4" name="elem4"></n0:e4> |
|||
<n1:e5 xmlns:n1="http://example.org" xmlns:n2="http://www.ietf.org" xmlns:n3="http://www.w3.org" attr="I'm" attr2="all" n2:attr="sorted" n3:attr="out"></n1:e5> |
|||
<n0:e6> |
|||
<n2:e7 xmlns:n2="http://www.ietf.org"> |
|||
<n0:e8> |
|||
<n0:e9 attr="default"></n0:e9> |
|||
</n0:e8> |
|||
</n2:e7> |
|||
</n0:e6> |
|||
</n0:doc> |
|||
@ -0,0 +1 @@ |
|||
<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><e7 xmlns="http://www.ietf.org"><e8 xmlns=""><e9 attr="default"></e9></e8></e7></e6></doc> |
|||
@ -0,0 +1,10 @@ |
|||
<doc> |
|||
<text>First line
 |
|||
Second line</text> |
|||
<value>2</value> |
|||
<compute>value>"0" && value<"10" ?"valid":"error"</compute> |
|||
<compute expr="value>"0" && value<"10" ?"valid":"error"">valid</compute> |
|||
<norm attr=" ' 
	 ' "></norm> |
|||
<normNames attr="A 
	 B"></normNames> |
|||
<normId id="' 
	 '"></normId> |
|||
</doc> |
|||
@ -0,0 +1,2 @@ |
|||
<doc><text>First line
 |
|||
Second line</text><value>2</value><compute>value>"0" && value<"10" ?"valid":"error"</compute><compute expr="value>"0" && value<"10" ?"valid":"error"">valid</compute><norm attr=" ' 
	 ' "></norm><normNames attr="A 
	 B"></normNames><normId id="' 
	 '"></normId></doc> |
|||
@ -0,0 +1,3 @@ |
|||
<doc attrExtEnt="entExt"> |
|||
Hello, world! |
|||
</doc> |
|||
@ -0,0 +1 @@ |
|||
<doc attrExtEnt="entExt">Hello, world!</doc> |
|||
@ -0,0 +1 @@ |
|||
<doc>©</doc> |
|||
@ -0,0 +1,4 @@ |
|||
<a:foo xmlns:a="http://a"> |
|||
<a:bar>xsd:string</a:bar> |
|||
<dsig2:IncludedXPath xmlns:dsig2="http://www.w3.org/2010/xmldsig2#">/soap-env:body/child::b:foo[@att1 != "c:val" and @att2 != 'xsd:string']</dsig2:IncludedXPath> |
|||
</a:foo> |
|||
@ -0,0 +1,4 @@ |
|||
<n0:foo xmlns:n0="http://a"> |
|||
<n0:bar xmlns:n1="http://www.w3.org/2001/XMLSchema">n1:string</n0:bar> |
|||
<n4:IncludedXPath xmlns:n2="http://b" xmlns:n3="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:n4="http://www.w3.org/2010/xmldsig2#">/n3:body/child::n2:foo[@att1 != "c:val" and @att2 != 'xsd:string']</n4:IncludedXPath> |
|||
</n0:foo> |
|||
@ -0,0 +1,4 @@ |
|||
<a:foo xmlns:a="http://a"> |
|||
<a:bar xmlns:xsd="http://www.w3.org/2001/XMLSchema">xsd:string</a:bar> |
|||
<dsig2:IncludedXPath xmlns:dsig2="http://www.w3.org/2010/xmldsig2#">/soap-env:body/child::b:foo[@att1 != "c:val" and @att2 != 'xsd:string']</dsig2:IncludedXPath> |
|||
</a:foo> |
|||
@ -0,0 +1,4 @@ |
|||
<a:foo xmlns:a="http://a"> |
|||
<a:bar xmlns:xsd="http://www.w3.org/2001/XMLSchema">xsd:string</a:bar> |
|||
<dsig2:IncludedXPath xmlns:b="http://b" xmlns:dsig2="http://www.w3.org/2010/xmldsig2#" xmlns:soap-env="http://schemas.xmlsoap.org/wsdl/soap/">/soap-env:body/child::b:foo[@att1 != "c:val" and @att2 != 'xsd:string']</dsig2:IncludedXPath> |
|||
</a:foo> |
|||
@ -0,0 +1,3 @@ |
|||
<foo> |
|||
<b:bar xmlns:b="http://b" att2="val" b:att1="val"></b:bar> |
|||
</foo> |
|||
@ -0,0 +1,3 @@ |
|||
<n0:foo xmlns:n0=""> |
|||
<n1:bar xmlns:n1="http://b" att2="val" n1:att1="val"></n1:bar> |
|||
</n0:foo> |
|||
@ -0,0 +1,6 @@ |
|||
<a:foo xmlns:a="http://a"> |
|||
<b:bar xmlns:b="http://b"></b:bar> |
|||
<b:bar xmlns:b="http://b"></b:bar> |
|||
<b:bar xmlns:b="http://b"></b:bar> |
|||
<a:bar xmlns:b="http://b" b:att1="val"></a:bar> |
|||
</a:foo> |
|||
@ -0,0 +1,6 @@ |
|||
<n0:foo xmlns:n0="http://a"> |
|||
<n1:bar xmlns:n1="http://b"></n1:bar> |
|||
<n1:bar xmlns:n1="http://b"></n1:bar> |
|||
<n1:bar xmlns:n1="http://b"></n1:bar> |
|||
<n0:bar xmlns:n1="http://b" n1:att1="val"></n0:bar> |
|||
</n0:foo> |
|||
@ -0,0 +1,3 @@ |
|||
<foo xmlns:a="http://z3" xmlns:b="http://z2" b:att2="val2" a:att1="val1"> |
|||
<bar xmlns="http://z0" xmlns:a="http://z2" xmlns:b="http://z3" a:att1="val1" b:att2="val2"></bar> |
|||
</foo> |
|||
@ -0,0 +1,3 @@ |
|||
<n0:foo xmlns:n0="" xmlns:n1="http://z2" xmlns:n2="http://z3" n1:att2="val2" n2:att1="val1"> |
|||
<n3:bar xmlns:n3="http://z0" n1:att1="val1" n2:att2="val2"></n3:bar> |
|||
</n0:foo> |
|||
@ -0,0 +1,4 @@ |
|||
<a:foo xmlns:a="http://z3" xmlns:b="http://z2" xmlns:c="http://z1" c:att3="val3" b:att1="val1" b:att2="val2"> |
|||
<c:bar></c:bar> |
|||
<c:bar xmlns:d="http://z0" d:att3="val3"></c:bar> |
|||
</a:foo> |
|||
@ -0,0 +1,4 @@ |
|||
<n2:foo xmlns:n0="http://z1" xmlns:n1="http://z2" xmlns:n2="http://z3" n0:att3="val3" n1:att1="val1" n1:att2="val2"> |
|||
<n0:bar></n0:bar> |
|||
<n0:bar xmlns:n3="http://z0" n3:att3="val3"></n0:bar> |
|||
</n2:foo> |
|||
@ -0,0 +1,4 @@ |
|||
<foo xmlns="http://z0" xmlns:a="http://z0" xmlns:b="http://z0" a:att1="val1" b:att2="val2"> |
|||
<c:bar xmlns:c="http://z0" c:att3="val3"></c:bar> |
|||
<d:bar xmlns:d="http://z0"></d:bar> |
|||
</foo> |
|||
@ -0,0 +1,4 @@ |
|||
<n0:foo xmlns:n0="http://z0" n0:att1="val1" n0:att2="val2"> |
|||
<n0:bar n0:att3="val3"></n0:bar> |
|||
<n0:bar></n0:bar> |
|||
</n0:foo> |
|||
@ -0,0 +1,3 @@ |
|||
<foo xmlns="http://z0" xml:id="23"> |
|||
<bar xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">data</bar> |
|||
</foo> |
|||
@ -0,0 +1,3 @@ |
|||
<n0:foo xmlns:n0="http://z0" xml:id="23"> |
|||
<n0:bar xmlns:n1="http://www.w3.org/2001/XMLSchema-instance" n1:type="xsd:string">data</n0:bar> |
|||
</n0:foo> |
|||
@ -0,0 +1,3 @@ |
|||
<n0:foo xmlns:n0="http://z0" xml:id="23"> |
|||
<n0:bar xmlns:n1="http://www.w3.org/2001/XMLSchema" xmlns:n2="http://www.w3.org/2001/XMLSchema-instance" n2:type="n1:string">data</n0:bar> |
|||
</n0:foo> |
|||
@ -0,0 +1,3 @@ |
|||
<foo xmlns="http://z0" xml:id="23"> |
|||
<bar xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">data</bar> |
|||
</foo> |
|||
@ -0,0 +1 @@ |
|||
world |
|||
@ -0,0 +1,2 @@ |
|||
The xml.etree.ElementTree packages gained support for C14N 2.0 serialisation. |
|||
Patch by Stefan Behnel. |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue