Skip to content

Instantly share code, notes, and snippets.

@emiliano-poggi
Created June 11, 2011 05:01
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save emiliano-poggi/1020269 to your computer and use it in GitHub Desktop.
Save emiliano-poggi/1020269 to your computer and use it in GitHub Desktop.
XSLT: Bypassing elements of a given namespace
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ns1="http://s1">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match=
"*[not(attribute::ns1:*)
and
not(descendant-or-self::ns1:*)
]
|
@*[not(namespace-uri()='http://s1')]
"/>
</xsl:stylesheet>
<Collection xmlns="http://s0" xmlns:ns1="http://s1">
<Identifier Name="CollectionX"
ns1:GlobalID="{E436833B-B0A6-4E0D-804B-60052B767AE3}"
ns1:LocalID="{0130C866-7A91-4544-A82B-E0C0F2E3BCB2}" />
<Properties>
<ns1:Collectible>1982</ns1:Collectible>
<Displayed>Reserved</Displayed>
<Picture>Reserved.jpeg</Picture>
</Properties>
<WeakLinks>
<Link Type="resource" Language="en-us"/>
</WeakLinks>
</Collection>
<?xml version="1.0" encoding="utf-8"?>
<Collection xmlns="http://s0" xmlns:ns1="http://s1">
<Identifier
ns1:GlobalID="{E436833B-B0A6-4E0D-804B-60052B767AE3}"
ns1:LocalID="{0130C866-7A91-4544-A82B-E0C0F2E3BCB2}" />
<Properties>
<ns1:Collectible>1982</ns1:Collectible>
</Properties>
</Collection>
@emiliano-poggi
Copy link
Author

This transform overrides the identity rule to filter all elements/attributes which do not belong to the target namespace and are not parent of elements/attributes with the target namespace.

Credits.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment