XML 문서를 다른 XML로 변환하기 위해 libxslt (xsltproc 명령)를 사용하고 있습니다.XSLT 1.0 숫자 참조를 사용하여 XML 이스케이프 문자 출력
출력에서 XML 이스케이프 된 문자에 숫자 참조를 사용하도록 libxslt에 요청하는 간단한 방법이 있는지 궁금합니다 (예 : &
의 경우 &
). 그 이유는 출력을 소비하는 응용 프로그램이 미리 정의 된 엔티티 (&
)를 이해하지 못하지만 숫자 문자 참조를 이해하기 때문입니다.
이것을 달성하는 데 몇 가지 복잡한 방법이 있다는 것을 알고 있지만 간단한 스타일 시트 표시 또는 명령 줄 옵션이 누락 된 것 같습니다. 그렇지 않은 경우에는 소비 응용 프로그램을 수정하는 것이 더 적절할 것입니다.
는 예를 제공하기 위해, 입력 XML은 다음과 같습니다<?xml version="1.0" encoding="UTF-8"?>
<A xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<B>< > " & '</B>
<B>< > " & '</B>
</A>
XSL은 다음과 같습니다
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="UTF-8" indent="yes" />
<xsl:strip-space elements="*" />
<xsl:template match="/">
<xsl:apply-templates select="/A/B" />
</xsl:template>
<xsl:template match="B">
<X><xsl:attribute name="ATTR"><xsl:value-of select="." /></xsl:attribute></X>
<xsl:text>
</xsl:text>
</xsl:template>
</xsl:stylesheet>
결과는 다음과 같습니다
<?xml version="1.0" encoding="UTF-8"?>
<X ATTR="< > " & '"/>
<X ATTR="< > " & '"/>
나는 것 후있어 결과 be :
<?xml version="1.0" encoding="UTF-8"?>
<X ATTR="< > " & '"/>
<X ATTR="< > " & '"/>
내가 스타일 시트 전에 다음을 추가하는 시도 :
<!DOCTYPE xsl:stylesheet [
<!ENTITY amp "&">
]>
또는
<!ENTITY amp "&#38;">
는하지만 그것은 작동하지 않았다 (즉, 결과는 엔티티 정의가 있든 없든 동일합니다).
character-map
은 XSLT 1.0에서 사용할 수 없기 때문에 옵션이 아님을 알고 있습니다.