1

IIS 7 のハンドラー セクションは別のセクションに移動されたので、TFS ビルド プロセス中にこれらのセクションを自動的に移動したいと考えています。その状況では、IIS 6.5 と 7.x の両方の環境に対応できます。

XSLT を使用して次のことを行います。

<configuration>
   <system.web>
      <httpHandlers>
            <add verb="*" path="*.New" type="MyHandler.New,MyHandler"/>
            <add verb="GET,HEAD" path="*.MyNewFileExtension" type="MyHandler.MNFEHandler,MyHandler.dll"/>
     </httpHandlers>
   <system.web>
</configuration>

次のように翻訳する必要があります。

<configuration>
    <system.web>
    </system.web>
    <system.webServer>
        <handlers>
            <add name="handler 1" verb="*" path="*.New" type="MyHandler.New,MyHandler"/>
            <add name="handler 2" verb="GET,HEAD" path="*.MyNewFileExtension" type="MyHandler.MNFEHandler,MyHandler.dll"/>
        </handlers>
   <system.webServer>
</configuration>

このための XSLT を作成することで誰かが私を助けてくれますか、それとも正しい方向に私を向けることができますか? (また、2 番目の xml の追加の属性 [name] に注意してください)

簡単な翻訳を行う方法は知っていますが、xml 内でノードのコレクションを移動するのは難しいです。ありがとう。

4

1 に答える 1

1

これはそれを行う必要があります:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>

  <xsl:template match="@* | node()">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="system.web">
    <system.web>
      <xsl:text>&#xA;</xsl:text>
    </system.web>
    <system.webServer>
      <handlers>
        <xsl:apply-templates select="httpHandlers/*" />
      </handlers>
    </system.webServer>
  </xsl:template>

  <xsl:template match="system.web/httpHandlers/*">
    <xsl:copy>
      <xsl:attribute name="name">
        <xsl:value-of select="concat('handler ', position())"/>
      </xsl:attribute>
      <xsl:apply-templates select="@* | node()" />
    </xsl:copy>
  </xsl:template>
</xsl:stylesheet>

サンプル入力で実行すると (終了時に不足しているスラッシュ<system.web>が追加された後)、次のようになります。

<configuration>
  <system.web>
  </system.web>
  <system.webServer>
    <handlers>
      <add name="handler 1" verb="*" path="*.New" type="MyHandler.New,MyHandler" />
      <add name="handler 2" verb="GET,HEAD" path="*.MyNewFileExtension" type="MyHandler.MNFEHandler,MyHandler.dll" />
    </handlers>
  </system.webServer>
</configuration>

<xsl:text>&#xA;</xsl:text>おそらく必要ありませんが、あなたの例<system.web>では出力の開始と終了が別々の行にあるため、それらが単一のショートタグに結合されないように追加しました(<system.web />)。

于 2013-02-01T18:42:23.827 に答える