1

以下のように動的に生成された XML を使用して、実行時にノード値を入力します。

<?xml version="1.0" encoding="utf-8" ?>
<master>
  <child>
    <category1>Category1_A</category1>
    <category2>Category2_B </category2>
  </child>
</master>

以下のように、web.config にカテゴリ コード構成キーがあります。

<add  key="Code"  value="A1|A2" />

以下は私の XSLT です。これが適切にフォーマットされていないことはわかっています。

そして、このXSLTには次の問題があります

  1. XML ではないため、以下の関数で設定キーを渡す方法を教えてください。
  2. このメソッドが false を返す場合、XSLT 属性から「申し訳ありませんが、組み合わせが一致しません」などの文字列メッセージを返したいと考えています。</li>
  3. 私はそれがかなり混乱していることを知っていますが、私はこれが非常に興味深いことを知っています.

    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:msxsl="urn:schemas-microsoft-com:xslt"
        xmlns:user="urn:my-scripts">
    
      <msxsl:script language="C#" implements-prefix="user">
        <![CDATA[
         public string checkCategory (string category1,string category2)
         {
        if( (category1=="Category1_A" && category1==" Category2_B") && ConfigurationManager.AppSetting["Code"].contains("A1"))
           return true;
           else
          return false;
         }
          ]]>
      </msxsl:script>
      <xsl:template match="master">
        <child>
          <circumference>
            <xsl:value-of select="user: checkCategory (category1,category2)"/>
            <!--if method return false then : return Sorry, Combination doesn’t match.”-->
          </circumference>
        </child>
      </xsl:template>
    </xsl:stylesheet>
    
4

1 に答える 1

1

関数が と を返す場合truefalse、戻り値の型を に変更する必要がありますbool

<msxsl:script language="C#" implements-prefix="user">
    <![CDATA[
     public bool checkCategory (string category1,string category2)
     {
       if( (category1=="Category1_A" && category2==" Category2_B") && ConfigurationManager.AppSetting["Code"].contains("A1"))
         return true;
       else
         return false;
     }
   ]]>
</msxsl:script>

コードを少し単純化できます。

<msxsl:script language="C#" implements-prefix="user">
   <![CDATA[
     public bool checkCategory (string category1,string category2)
     {
        return (category1 == "Category1_A" && category2 == "Category2_B") &&
                 ConfigurationManager.AppSetting["Code"].contains("A1");
     }
   ]]>
</msxsl:script>

次に、次を使用できますxsl:if

  <xsl:template match="master">
    <child>
      <circumference>
        <xsl:if select="user:checkCategory(category1,category2)">
           <xsl:text>Sorry, Combination doesn’t match.</xsl:text>
        </xsl:if>
      </circumference>
    </child>
  </xsl:template>
于 2013-03-06T23:09:06.400 に答える