적용 코드가있는 텍스트 만 표시하여 .xml 파일을 오류를 쉽게 확인하기 위해 HTML을 생성하는 .xsl 파일을 작성하려고합니다.
XML의 일반 뷰어 응용 프로그램은 XML의 적용 가능성 코드를 기반으로 콘텐츠를 필터링합니다. (적용 코드는 개별 차량 모델을 나타냅니다.) 뷰어 응용 프로그램에서 필터링을 비활성화 할 수있는 방법이 없습니다. 즉, 잠재적으로 누군가가 모든 모델에 대해 올바른지 확인하기 위해 모든 파일을 여러 번 검사해야합니다 (각 적용 코드마다 한 번씩) .
<para>Disconnect main chassis wire harness connector
MC57 (<xref applicable="UOC_GP0 UOC_HG0 UOC_WC0 UOC_2U0"
figid="F01"/><xref applicable="UOC_GP1 UOC_HG1 UOC_WC1
UOC_2U1" figid="F01A"/>, Item 3) from main cab wire
harness connector MC57 (<xref applicable="UOC_GP0
UOC_HG0 UOC_WC0 UOC_2U0" figid="F01"/>
<xref applicable="UOC_GP1 UOC_HG1 UOC_WC1 UOC_2U1"
figid="F01A"/>, Item 2).</para>
관련 XSL은 아주 간단합니다 :
내가 그 안에 중첩 된 태그와 XML 데이터를
<xsl:for-each select="para">
   Step1 Para:  
<xsl:value-of select="." /><br />
</xsl:for-each>
하지만 외부 참조 태그를 필터링하고 출력을 잎 :
Step1 Para: Disconnect main chassis wire harness connector
MC57 (, Item 3) from main cab wire harness connector MC57 (, Item 2).
출력 내용은 xsl 작성 방법이 맞지만 원하는 내용은 아닙니다.
내가 쓴대로, 외부 참조 태그와 파라 혼합 그들의 속성을 포함하도록 출력을 싶습니다: 추한이지만, reviwers이 적용과 외부 참조가 있음을 알려 것
Disconnect main chassis wire harness connector
MC57 (<xref applicable="UOC_GP0 UOC_HG0 UOC_WC0 UOC_2U0"
figid="F01"/><xref applicable="UOC_GP1 UOC_HG1 UOC_WC1
UOC_2U1" figid="F01A"/>, Item 3) from main cab wire
harness connector MC57 (<xref applicable="UOC_GP0
UOC_HG0 UOC_WC0 UOC_2U0" figid="F01"/>
<xref applicable="UOC_GP1 UOC_HG1 UOC_WC1 UOC_2U1"
figid="F01A"/>, Item 2).
파라.
xsl에서 프로세서가 태그의 내용을 PCDATA가 아닌 CDATA로 처리해야한다는 신호가 있습니까? 그게 확실한 해결책 인 것 같지만, 그렇게 할 방법을 찾지는 못합니다.
또는 다른 방법으로이 문제를 해결할 수 있습니까? para 태그에 xref 태그가 무작위로 임베드되어 있으면 나는 다소 혼란 스럽다.
감사 XML로 표시
그래서 어떤 XSLT 프로세서 버전을 사용합니까? 출력이 HTML이지만 입력에 일부 노드의 XML 마크 업을 표시하려면 직렬화해야합니다. XSLT 3에서 가능합니다 (예 : Saxon 9.8의 오픈 소스에서 지원됨). 'value-of '대신에 를 사용하십시오. –
'xsl : apply-templates'을 실행하고'xref'와 일치 시켜서 직접 직렬화 할 수 있습니다. –
저에게 명백한 해결책은 문자열 값을 출력하는 대신 각 (텍스트 노드 자식 포함)의 모든 자식을 변환하는 것입니다. 이는 지금까지받은 답변 중 하나 일뿐입니다. 물론 이것이 가장 자연스러운 해결책입니다. –