:왜 <xsl : template match = "/"><xsl : result-document>를 추가 할 때 오류가 발생합니까? 이 소스 XML로
<?xml version='1.0' encoding='UTF-8'?>
<ns:Report_Data xmlns:ns="urn:someURN">
<ns:Report_Entry>
<ns:ReportName>SomeReportName</ns:ReportName>
<ns:ReportComments>Some description for this report....</ns:ReportComments>
<ns:AreaWhereUsed Descriptor="ThisIsATransform">
<ns:ID type="GUID">SomeUniqueID</ns:ID>
<ns:ID type="Component_ID">CUSTOM_COMPONENT</ns:ID>
</ns:AreaWhereUsed>
<ns:AreaWhereUsed Descriptor="SomeProcessName">
<ns:ID type="GUID">SomeDifferentUniqueID</ns:ID>
<ns:ID type="Process_ID">SomeProcessName</ns:ID>
</ns:AreaWhereUsed>
<ns:Area_Where_Used/>
<ns:Area_Where_Used>
<ns:AWU_Comment>This is some process description</ns:AWU_Comment>
</ns:Area_Where_Used>
<ns:CFs>
<ns:CF>SomeCF</ns:CF>
</ns:CFs>
</ns:Report_Entry>
</ns:Report_Data>
나는 텍스트 문서의 집합으로 변환하려합니다. 각 "보고서 항목"에 대해 하나의 문서
나는이 XSL 사용하는 경우 :
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:ns="urn:someURN"
exclude-result-prefixes="xs" version="2.0">
<xsl:output method="text" omit-xml-declaration="yes"/>
<xsl:variable name="delimiter" select="'	'"/>
<xsl:variable name="quote" select="'"'"/>
<xsl:variable name="linefeed" select="'
'"/>
<xsl:template match="/">
<!-- Data Row Begins -->
<xsl:for-each select="/ns:Report_Data/ns:Report_Entry">
<xsl:text>Text and various other stuffs</xsl:text>
</xsl:for-each>
<!-- Data Row End -->
</xsl:template>
</xsl:stylesheet>
출력은 텍스트의 한 줄, 내가 주로 기대하는 것을입니다. 그러나
, 내가 지금처럼 result-document
태그를 추가 Error: Internal error evaluating template rule at line 10 in module
템플릿 라인을 참조 : <xsl:template match="/">
을 내 변환을 테스트하기 위해 웹 사이트 http://xslttest.appspot.com/을 사용하고
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:ns="urn:someURN"
exclude-result-prefixes="xs" version="2.0">
<xsl:output method="text" omit-xml-declaration="yes"/>
<xsl:variable name="delimiter" select="'	'"/>
<xsl:variable name="quote" select="'"'"/>
<xsl:variable name="linefeed" select="'
'"/>
<xsl:template match="/">
<!-- Data Row Begins -->
<xsl:for-each select="/ns:Report_Data/ns:Report_Entry">
<xsl:result-document method="text" href="file_{@ns:ReportName}-output.txt">
<xsl:text>Text and various other stuffs</xsl:text>
</xsl:result-document>
</xsl:for-each>
<!-- Data Row End -->
</xsl:template>
</xsl:stylesheet>
가 나는 오류가 발생합니다.
저는 아직 XSL에 익숙하지 않아 템플릿과 적용 템플릿 태그가하는 일을 이해하지 못합니다. 템플리트 태그가 result-document 태그와 상호 작용하는 방법에 관해서는 어떤 조언도 주시면 감사하겠습니다.
(코드를 심각하게 위생적으로 처리했지만 위와 같이 실행됩니다.)
감사합니다.
그렇다면'xsl : result-document'를 사용하여 파일을 쓸 수있는 온라인 응용 프로그램을 사용하고 있습니까? 파일을 어디에 쓸 것으로 예상합니까? 나는 XSLT 프로세서가 설치된 자신의 시스템이나 설치된 XML IDE와 같은 환경에서 프로세서가 결과를 출력하기 위해 파일 시스템에 액세스 할 수있는 권한이 있는지 확인할 수있는 방법을 제안합니다. –
죄송합니다. 대상 환경 (이 기능을 지원하는 업체에서 말한 것입니다)에서이 작업을 시도해 보았습니다. 또한 이와 비슷한 모호한 오류가 발생했습니다. – Matt
출력 형식이 일반 텍스트라고 가정하면'href = "file _ {@ ReportName} -output.xml"''.xml'을 사용하는 이유가 궁금합니다. 나는 왜 당신이'@ ReportName'을 가지고 있는지 의아하게 생각합니다, 당신은 단지 그 이름의 엘리먼트와 그 이름의 애트리뷰트를 가지지 않기 때문에'ReportName'을 대신 쓰고 싶다고 생각합니다. –