문제

내 XML에는 그 안에 몇 가지 스타일이 있습니다.XslCompiledTransform Transform의 출력은 이러한 스타일 태그가 없는 HTML로 생성됩니다.XslCompiledTransform에 이를 유지하도록 지시하는 방법이 있습니까?아니면 XslCompiledTransform이 이를 기본적으로 유지해야 합니까?

여기 내 XML이 있습니다

> <codeSnippetFull>
>         <span class="kwrd">event</span> 
>         OnCreate {
>         <span class="kwrd">if</span>
>              (Count == 0)
>                   AddE(D); <span class="rem">//  comment </span>
>         }
>        </codeSnippetFull>

내 xslt는 전체 요소를 꺼냅니다.

         <xsl:value-of select="THelpDocument/HelpBody/example/codeSnippetFull"/>

여기 내 C#이 있습니다. 적용된 기본값 외에는 아무것도 없습니다.

 // Load the style sheet. 
 XslCompiledTransform xslt = new XslCompiledTransform();
 xslt.Load(args[0]);

......
         xslt.Transform(xmlFileName, Path.Combine(htmlOutputPath, Path.GetFileNameWithoutExtension(xmlFileName) + ".html"));

xslt에서 스타일을 지정하지 않는 이유는 블록에 임의의 텍스트와 혼합된 스타일이 적용될 수 있기 때문입니다.단락의 특정 단어에 스타일을 지정하는 것입니다.

도움이 되었습니까?

해결책

XSLT 코드

<xsl:value-of select="THelpDocument/HelpBody/example/codeSnippetFull"/>

실제로 (마크업) 내용을 복사하지 않습니다. <codeSnippetFull> 요소. <xsl:value-of> 생성하는 데 사용됩니다 텍스트 노드.Value-of는 선택한 노드를 문자열로 변환합니다.요소의 문자열 값은 선택한 요소의 하위 항목인 텍스트 노드를 연결한 것입니다.노드 세트의 문자열 값(예:선택한 여러 요소)는 집합에 있는 첫 번째 노드의 문자열 값입니다.

XSLT의 요소를 복사하려면 다음을 사용할 수 있습니다.

  1. <xs:copy> 선택한 노드를 복사하지만 속성이나 하위 노드는 복사하지 않습니다.
  2. <xs:copy-of> 선택한 전체 XML 조각(=또한 모든 하위 항목 및 속성)을 복사합니다.
  3. ID 템플릿, 즉재귀 템플릿 <xs:copy>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top