이 변환이 가장 일반적입니다. 전역 매개 변수 내에 지정된 네임 스페이스에서 모든 요소와 특성을 제거합니다. 또한이 네임 스페이스 중 하나 모든 네임 스페이스 노드 제거합니다
이러한 변화는 다음과 같은 XML 문서에 적용
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:my="my:my" >
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<my:delNs>
<ns>some:namespace1</ns>
<ns>some:namespace3</ns>
</my:delNs>
<xsl:variable name="vdelNS"
select="document('')/*/my:delNs/*"/>
<xsl:template match="*">
<xsl:element name="{name()}" namespace="{namespace-uri()}">
<xsl:copy-of select="namespace::*[not(.=$vdelNS)]"/>
<xsl:apply-templates select="node()|@*"/>
</xsl:element>
</xsl:template>
<xsl:template match="@*">
<xsl:copy-of select="."/>
</xsl:template>
<xsl:template priority="10" match=
"*[namespace-uri()=document('')/*/my:delNs/*]">
<xsl:element name="{local-name()}">
<xsl:copy-of select="namespace::*[not(.=$vdelNS)]"/>
<xsl:apply-templates select="node()|@*"/>
</xsl:element>
</xsl:template>
<xsl:template match=
"@*[namespace-uri()=document('')/*/my:delNs/*]">
<xsl:attribute name="{local-name()}">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:template>
</xsl:stylesheet>
(제공된에 따라,하지만 잘 형성되도록 수정 및 포함하도록 확장 3 네임 스페이스와 그 안에 요소와 속성) : 원하는 결과가을 생산
<catalog xmlns:ost="some:namespace1"
xmlns:x="some:namespace2"
xmlns:y="some:namespace3">
<cd>
<ost:title>Empire Burlesque</ost:title>
<y:artist>Bob Dylan</y:artist>
<country>USA</country>
<company ost:type="big">
<ost:name>Columbia</ost:name>
</company>
<x:price>10.90</x:price>
<year>1985</year>
</cd>
</catalog>
:
,210 설명 :
처음 두 템플릿 신원 규칙과 거의 동일하지만,이<my:delNs>
에 지정된 네임 스페이스에 대한 네임 스페이스 노드를 복사하지 않습니다.
마지막 두 템플릿은<my:delNs>
아래에 나열된 네임 스페이스에 속하는 모든 요소와 특성에 사용됩니다. 이 두 템플릿의 이름 만 로컬 이름으로 실제로 변경됩니다.
4 칸을 들여 쓰거나 101010 단추를 사용하여 코드를 입력하십시오. 나는 너를 위해 그것을 고쳤다. –
안녕하세요, 네. 우리는 ost의 이름 공간이 있습니다. 실제로 우리는 xml을이 ost 이름 공간을 지원하지 않는 이전 버전으로 되돌리려합니다. 답장을 보내 주셔서 감사합니다 – Hasif
당신이 * 가지고있는 것이 좋지만 * 우리는 어떨까요? –