루트 노드를 변경하는 데 필요한 XML 문서가 있습니다. 작은 지식으로 내가 그물에서 긁어 낼 수 있었기 때문에 나는 XML의 자식 노드에 새로운 xmlns 속성이 있다는 점을 제외하고는 원하는 것처럼 보이게 만들 수있었습니다. 내 XSLT는 다음과 같습니다XSLT를 적용 할 때 XML 응답에 xmlns 속성을 추가하지 마십시오
<gmd:MD_Metadata xmlns="http://www.isotc211.org/2005/gmd"
xmlns:gco="http://www.isotc211.org/2005/gco"
xmlns:gmd="http://www.isotc211.org/2005/gmd"
xmlns:gmi="http://www.isotc211.org/2005/gmi"
xmlns:gml="http://www.opengis.net/gml"
xmlns:gmx="http://www.isotc211.org/2005/gmx"
xmlns:gsr="http://www.isotc211.org/2005/gsr"
xmlns:gss="http://www.isotc211.org/2005/gss"
xmlns:gts="http://www.isotc211.org/2005/gts"
xmlns:srv="http://www.isotc211.org/2005/srv"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.isotc211.org/2005/gmd
http://www.ngdc.noaa.gov/metadata/published/xsd/schema/gmd/gmd.xsd">
<gmd:language>
<gmd:LanguageCode
codeList="http://www.loc.gov/standards/iso639-2/php/code_list.php"
codeListValue="eng" codeSpace="ISO639-2"
>eng</gmd:LanguageCode>
</gmd:language>
......
</gmd:MD_Metadata>
:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:gmd="http://www.isotc211.org/2005/gmd"
xmlns:gco="http://www.isotc211.org/2005/gco"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:gml="http://www.opengis.net/gml"
xmlns:gmi="http://www.isotc211.org/2005/gmi">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/">
<gmi:MI_Metadata
xmlns="http://www.isotc211.org/2005/gmi"
xmlns:gco="http://www.isotc211.org/2005/gco"
xmlns:gmd="http://www.isotc211.org/2005/gmd"
xmlns:gmi="http://www.isotc211.org/2005/gmi"
xmlns:gml="http://www.opengis.net/gml"
xmlns:gmx="http://www.isotc211.org/2005/gmx"
xmlns:gsr="http://www.isotc211.org/2005/gsr"
xmlns:gss="http://www.isotc211.org/2005/gss"
xmlns:gts="http://www.isotc211.org/2005/gts"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:srv="http://www.isotc211.org/2005/srv"
xsi:schemaLocation="http://www.isotc211.org/2005/gmi
http://www.ngdc.noaa.gov/metadata/published/xsd/schema.xsd" >
<xsl:for-each select="/*/node()|@*">
<xsl:copy-of select="." />
</xsl:for-each>
</gmi:MI_Metadata>
</xsl:template>
</xsl:stylesheet>
을 그리고 출력은 다음과 같습니다 나는 의 xmlns를 피하기 위해 원
<gmi:MI_Metadata xmlns="http://www.isotc211.org/2005/gmi"
xmlns:gco="http://www.isotc211.org/2005/gco"
xmlns:gmd="http://www.isotc211.org/2005/gmd"
xmlns:gmi="http://www.isotc211.org/2005/gmi"
xmlns:gml="http://www.opengis.net/gml"
xmlns:gmx="http://www.isotc211.org/2005/gmx"
xmlns:gsr="http://www.isotc211.org/2005/gsr"
xmlns:gss="http://www.isotc211.org/2005/gss"
xmlns:gts="http://www.isotc211.org/2005/gts"
xmlns:srv="http://www.isotc211.org/2005/srv"
xmlns:v1="http://www.isotc211.org/2005/gmd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.isotc211.org/2005/gmi
http://www.ngdc.noaa.gov/metadata/published/xsd/schema.xsd">
<gmd:language xmlns="http://www.isotc211.org/2005/gmd">
<gmd:LanguageCode
codeList="http://www.loc.gov/standards/iso639-2/php/code_list.php"
codeListValue="eng" codeSpace="ISO639-2"
>eng</gmd:LanguageCode>
</gmd:language>
.......
</gmi:MI_Metadata>
처럼 나는 변환을 적용 된 XML 본다 = "http://www.isotc211.org/2005/gmd" 자식 노드의 출력에, 나는 그것을 달성 할 수있는 방법이 있습니까?
<xsl:template match="/">
<gmi:MI_Metadata xmlns="http://www.isotc211.org/2005/gmd" ....
의 xmlns 사라하지만 헤더/루트 노드는 클라이언트 출력에 원하는 것을되지 않습니다 : 난에 XSLT 부분을 변경할 때 것으로 나타났습니다! 그래서 나는 내가 할 수있는 일을 확신하지 못했습니다. 당신의 통찰력은 높게 평가 될 것입니다, 감사합니다.
토라자부로와 @C에 감사드립니다. M. Sperberg-McQuee 님의 답변입니다. torazaburo가 제공하고 xmlns 특성을 제거 할 수있는 xslt 조각을 적용했습니다. xlink : type = "simple"이 자식 엘리먼트의 일부에 붙어있는 것을 보았습니다. 그러나 나는 그것을 처리하기 위해 뭔가를 할 수 있다고 생각합니다. 다시 한번 감사드립니다. –