2014-12-08 4 views
0

조회 테이블처럼 사용하고있는 xsl 변수가 들어있는 xslt 파일이 있습니다..NET 변환 메서드를 호출 할 때 문서 ('') 함수 오류가 발생했습니다

<xsl:variable name="TestLookup"> 
    <lookup code="A" means="Test A"/> 
    <lookup code="B" means="Test B"/> 
    <lookup code="C" means="Test C"/> 
</xsl:variable> 

나는 이것을 이렇게 부른다.

<xsl:value-of select="document('')/*/xsl:variable[@name='TestLookup']/lookup[@code=current()]/@means"/> 

내가 .NET의 변환 메서드를 호출 할 때 나는 다음과 같은 오류를 얻을 :

An error occurred while loading document '' 
This operation is not supported for a relative URI. 

은 기본적으로는 문서를 찾을 수 없습니다 내게 말하고있다.
xslt 파일에서 조회 테이블을 만들고 .NET의 변형 명령으로 호출 할 수있는 방법이 필요합니다.

이 기사에는 동일한 문제가 있었지만 답변을 찾지 못했습니다. p/2 함수에 관한 것?
또한 node-set()이 나열되었지만 node-set을 조회 테이블로 사용할 때 좋은 기사를 찾을 수 없습니다.
using document() function in .NET XSLT generates error



.NET 코드 더 많은 코드 추가

스타일 시트의 파일 이름이나 URL로 문자열을 취하는 Load 방법의 과부하가있다
' get the xml from SQL  
Dim xmlData As String = sqlXmlReader.Item("XmlData").ToString() 

' read the xslt file 
Using styleSheet = New StreamReader("XSLTTestFile.xslt") 
    ' load the stylesheet from a resource 
    Using styleSheetReader As XmlReader = XmlReader.Create(styleSheet) 
     Dim xslt = New XslCompiledTransform() 
     Dim xsltSettings = New XsltSettings(True, False)    
     xsltSettings.EnableDocumentFunction = True 

     ' load the stylesheet for transformation 
     xslt.Load(styleSheetReader, xsltSettings, New XmlUrlResolver()) 
     Using stringWriter As New System.IO.StringWriter 
      ' transform the xml document along with the stylesheet 
      Dim xmlDoc = New XmlDocument() 
      xmlDoc.LoadXml(xmlData) 
      xslt.Transform(xmlDoc, Nothing, stringWriter) 
      ' dump the transformation to the browser control 
      _htmlString.Append(stringWriter.ToString()) 
     End Using 
    End Using 
End Using 
+0

대답은'XsltSettings'를 사용하는 것이 었습니다. 너 그거 해봤 니? –

+0

가능한 중복 [.NET에서 document() 함수 사용 XSLT 오류 생성] (http://stackoverflow.com/questions/2710369/using-document-function-in-net-xslt-generates-error) –

+0

예 했어요. New XsltSettings (True, False)를 시도해보십시오. 오류를 얻는 방법은 복제물 일 수 있습니다. (설명의 맨 아래에 적혀 있습니다. – goroth

답변

1

, 이를 사용하고 XslCompiledTransformdocument('')을 해결하는 방법을 알고 있습니다. 따라서 xslt.Load("XSLTTestFile.xslt", xsltSettings, new XmlUrlResolver())을 사용하십시오.

+0

내가 사용할 수있는 유일한 방법은 XmlUrlReslover이지만 ResolveUri에는 xsl에 대한 URI가 없습니다. xsl은 웹이 아닌 파일 시스템에 있습니다. – goroth

+0

StreamReader를 통해 XmlReader와 레슬링하는 대신 해당 파일 이름을 'Load' 메소드에 전달하십시오. –

+0

문제가 해결되었습니다. 사용 된로드 ("fileName", 새 XsltSettings (True, True), 새 XmlUrlResolver()) ... 감사. – goroth

관련 문제