2010-05-07 13 views
6

- 내가 제네릭에 도착하고 출력이 같은 텍스트 필요할 때까지 그 큰 일을 :XSLT : 전체 문서에서 탈출 함 출력 내가 XSLT 사용하여 일부 C# 코드를 생성하기 위해 노력하고있어

MyClass<Type> 

이에서를 나는이를 방출 할 수있는 유일한 방법은 다음을 수행하는 것으로 나타났습니다 경우 :

MyClass<xsl:text disable-output-escaping="yes">&lt;</xsl:text>Type<xsl:text disable-output-escaping="yes">&gt;</xsl:text> 

여기서 종종 모든 일리터에 갈 필요

  • 오프라인, 그렇지 않으면 당신은 예를 들어, 그러나 일반적으로 유형 Type이 다른 템플릿에 의해 주어진, 생성 된 코드 내가 기술적으로 단 1 <xsl:text />을 사용할 수도 위의 예에서
  • 에서 줄 바꿈으로 끝낼 :

<xsl:value-of select="@type" />

&lt;을 많이 쓰지 않아도 되겠지만, 단 하나의 문자로는 <xsl:text disable-output-escaping="yes">&lt;</xsl:text>을 쓰지 않으려합니다.

전체 문서에 대해 disable-output-escaping="yes"을 수행하는 방법이 있습니까?

답변

2

이유는 왜 작동하지 않았는가? 나는 변환을 적용하고 있었다. XSLT를 사용하고 XmlWriter를 사용하여 XML을 변환했지만 Microsoft XML Teams blog에 따르면 XmlWriter를 사용하여 출력 태그가 무시됩니다!

내가 명시 적으로 변환 XSL들에 XmlWriters 출력 설정을 설정하여이 고정 : 나는 이런 짓을하면

XmlWriterSettings ws = xslt.OutputSettings.Clone(); 
ws.CheckCharacters = false; 

xslt.Transform("MyDocument.xml", XmlWriter.Create(Console.Out, ws)); 

이는 내 태그를 존중 변환하고, 모든 것이 잘했다!

+0

생명의 은인! 감사! – killercowuk

0

나는 이것이 귀하의 질문에 대한 직접적인 대답이 아니라는 것을 알고 있습니다.

여기

거대한 가정 : 나는 제네릭에 도달 할 때까지

<xsl:template match="classthing"> 
    <xsl:call-template name="setgeneric"> 
     <xsl:with-param name="myclass"><xsl:value-of select="@class" /></xsl:with-param> 
     <xsl:with-param name="mytype"><xsl:value-of select="@type" /></xsl:with-param> 
    </xsl:call-template> 
    </xsl:template> 

    <xsl:template name="setgeneric"> 
    <xsl:param name="myclass" /> 
    <xsl:param name="mytype" /> 
    <xsl:value-of select="$myclass"/> 
    <xsl:text disable-output-escaping="yes">&lt;</xsl:text> 
    <xsl:value-of select="$mytype"/> 
    <xsl:text disable-output-escaping="yes">&gt;</xsl:text> 
    </xsl:template> 
1

가 큰 작업 및 출력 텍스트에 필요 템플릿을 호출 할 수

<classthing class="MyClass" type="atype"/> 

: 당신이 가지고있는 것처럼 뭔가를해야만 은 다음과 같습니다.

MyClass<Type> 

확실히>

MyClass<xsl:text disable-output-escaping="yes">&lt;</xsl:text>Type<xsl:text 

해제 출력 - 탈출 = "예":이 경우

나는이 방출하는 유일한 방법은 다음 을 수행하는 것으로 나타났습니다 , 이것은 이 아니며 유일한 방법이고 이것은 이러한 결과를 생성하는 최악의 방법입니다.

전체 문서에 대한 비활성화 출력 - 탈출 = "예"를하는 방법이 있습니까?

이것은 <xsl:output>method="text" 속성을위한 것입니다. DOE 필요 없음.여기

MyClass&lt;Type> 

완전한 작은 예이다

그래서 다음 text 출력 방법을 사용한다.

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="text"/> 

<xsl:template match="/"> 
    MyClass&lt;Type> 
</xsl:template> 
</xsl:stylesheet> 

는 위의 변환이있는 XML 문서 (사용되지 않음)에 적용되면, 원하는 결과가 생성됩니다

MyClass<Type> 

내가 IE-을 생산하는 XPath를 시각화의 저자이다 XML 파일과 같은 프리젠 테이션 - 아무 곳에도 DOE가 없습니다.

+0

내 XSLT에 이미''가 있지만 아무런 차이가 없다. 내 XSLT 프로세서를 잘못 호출하고있는 것이 가능한가? – Justin

+0

@Kragen : DOE없이 원하는 텍스트를 생성하는 방법을 보여주는 완전한 예제를 제공하는 답을 업데이트했습니다. –

+0

고마워 - 나는 왜 그것이 작동하지 않는다고 생각하는지 모르지만 이것은 지금 나를 위해 일하는 것 같다. – Justin