2017-03-24 9 views
0

更新
私がやろうとしていることをもう少し説明してください。単に、xsl transformを使って画像を動的に生成しようとしています。それでおしまい。今のところ。これは、XSLは、私が持っている変換され enter image description hereasp.net xslコードブロックは動作します

(注:私はまだXML部分を使用していないよ、私は「ドン

だからここは私が生成しようとしているウェブページのイラストですそれは)問題を引き起こしている可能性があります場合はtは知っている:

using System; 
using System.IO; 
using System.Xml; 
using System.Xml.Xsl; 

namespace WebApplication1 
{ 
    public partial class _default : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      string transform = GetXsl(); 
      string input = GetXml(); 

      StringWriter sw = new StringWriter(); 
      using (XmlReader xrt = XmlReader.Create(new StringReader(transform))) 
      using (XmlReader xri = XmlReader.Create(new StringReader(input))) 
      using (XmlWriter xwo = XmlWriter.Create(sw)) 
      { 
       XslCompiledTransform xslt = new XslCompiledTransform(); 
       xslt.Load(xrt); 
       xslt.Transform(xri, xwo); 
      } 
      out11.InnerHtml = sw.ToString(); 
     } 

     private string GetXml() 
     { 
      return 
@"<?xml version='1.0' encoding='UTF-8'?> 
<catalog> 
    <data id='1' option1='key1' option2='0' /> 
    <data id='2' option1='' option2='1' /> 
</catalog> 
"; 
     } 

     private string GetXsl() 
     { 
      return 
@"<?xml version='1.0' encoding='UTF-8'?> 
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'> 

    <xsl:template match='/'> 
     <img src='<%= Class1.ImageName(""arg1"") %>' alt='alt text' /> 
    </xsl:template> 

</xsl:stylesheet> 
"; 
     } 
    } 
} 

を私は上記のコードで抱えている問題は(あなたがスクロールダウンする必要があるかもしれません)GetXsl方法である:

enter image description here

そして、ここでスタックトレースです: enter image description here

ORIGINAL POST

私はXSLにスクリプトブロックを使用することはできますか?

<xsl:template match="mytest"> 
    Todo: 
    <h3>In progress...</h3> 

    '&lt;%="hello-world" %&gt;' CAN THIS WORK SOMEHOW 

    <span id="spnIcon" runat="server" class="fa-1x"></span> 

    </xsl:template> 
+0

、より詳細な例えば

XsltArgumentList xal = new XsltArgumentList(); xal.AddExtensionObject( MyXsltExtensionFunctions.Namespace, new MyXsltExtensionFunctions()); 

を変換可能な複製を呼び出す(http://stackoverflow.com/questions/7444317/how-to -include-javascript-file-in-xslt) – Seano666

答えて

0

あなたはとてもあなたがそれを行う方法がある

それを呼び出す、あなたはC#のメソッドに欲しいものを包むことができ、XSL

からC#​​のメソッドを呼び出すことができます。

  1. 宣言名前空間
  2. 名前空間でxslで呼び出す
  3. 変換を実行すると、名前空間

ので

のようなものが定義したクラスを渡す

<?xml version="1.0" encoding="utf-8"?> 
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
      xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl" 
      xmlns:ext="http://XsltSampleSite.XsltFunctions/1.0"> 

あなたのC#コードXLSで

public class MyXsltExtensionFunctions 
{ 
    public const string Namespace = "http://XsltSampleSite.XsltFunctions/1.0"; 

    public string HelloWorld() 
    { 
     return "Hello World"; 
    } 
} 

<xsl:template match="mytest"> 
    Todo: 
    <h3>In progress...</h3> 

    <xsl:value-of select="ext:HelloWorld()" /> 

    <span id="spnIcon" runat="server" class="fa-1x"></span> 

    </xsl:template> 

[XSLTでのJavaScriptファイルをインクルードする方法]のチェックアウトhttps://www.intertech.com/Blog/calling-net-functions-from-an-xml-stylesheet/

関連する問題