---
title: "構成パッチファイルの例"
slug: "configuration-patch-file-examples"
abstract: "サーバー設定を追加または変更するパッチファイルの書き方の例。"
---
# 構成パッチファイルの例

以下のパッチ構文の例は、パッチが設定に与える影響を示しています。すべての例は元の構成を示し、次にパッチファイル、そしてパッチファイルがSitecore.configファイルとマージされた後の構成を示します。

例は以下の通りです:

-   [マージ構成](https://doc.sitecore.com/xp/ja/developers/92/platform-administration-and-architecture/configuration-patch-file-examples.html#UUID-7ac45c9d-b7cd-399f-6b71-eb32b95f71aa_id__Merge_configurations "Merging configurations")
-   [特定の要素の前に要素を挿入する](https://doc.sitecore.com/xp/ja/developers/92/platform-administration-and-architecture/configuration-patch-file-examples.html#UUID-7ac45c9d-b7cd-399f-6b71-eb32b95f71aa_id__Override_a_configuration "Inserting an element before a specific element")
-   [特定の要素の後に要素を挿入する](https://doc.sitecore.com/xp/ja/developers/92/platform-administration-and-architecture/configuration-patch-file-examples.html#UUID-7ac45c9d-b7cd-399f-6b71-eb32b95f71aa_id__Insert_an_element_2 "Inserting an element after a specific element")
-   [属性の追加や更新](https://doc.sitecore.com/xp/ja/developers/92/platform-administration-and-architecture/configuration-patch-file-examples.html#UUID-7ac45c9d-b7cd-399f-6b71-eb32b95f71aa_id__Add_or_update "Adding or updating an attribute")
-   [要素の削除](https://doc.sitecore.com/xp/ja/developers/92/platform-administration-and-architecture/configuration-patch-file-examples.html#UUID-7ac45c9d-b7cd-399f-6b71-eb32b95f71aa_id__Deleting_an_element "Deleting an element")
-   [要素の値の置換](https://doc.sitecore.com/xp/ja/developers/92/platform-administration-and-architecture/configuration-patch-file-examples.html#UUID-7ac45c9d-b7cd-399f-6b71-eb32b95f71aa_id__Replacing_the_value "Replacing the value of an element")

設定をカスタマイズするには、これらのパッチ構文の例を使って [設定の追加や変更](https://doc.sitecore.com/xp/ja/developers/92/platform-administration-and-architecture/use-a-patch-file-to-customize-the-sitecore-configuration.html "Use a patch file to customize the Sitecore configuration")に役立ちます。

patchおよびset名前空間を使用するには、パッチファイルの冒頭で<configuration>設定の一部として宣言してください:

<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/"
xmlns:set="http://www.sitecore.net/xmlconfig/set/">
 <sitecore>
 . . . . .
 </sitecore>
</configuration>

## マージ構成

異なるパッチファイルの構成は、パッチファイルの処理順にマージされます。

<!-- Sitecore.config -->
<settings>
 <setting name="name" value="Aaron" />
</settings>
<!-- /App\_Config/Include/file1.config -->
<settings>
 <setting name="city" value="New York" />
</settings>
<!-- /App\_Config/Include/file2.config -->
<settings>
 <setting name="country" value="USA" />
</settings>

実行時に使用される構成は以下の通りです:

<settings>
 <setting name="name" value="Aaron" />
 <setting name="city" value="New York" />
 <setting name="country" value="USA" />
</settings>

## 特定の要素の前に要素を挿入する

特定の要素の前に構成要素を挿入することができます。この例では、構成内のtest2の位置に関係なく、test2型のプロセッサの前にプロセッサを追加します。

<!-- Sitecore.config -->
<test>
 <processor type="test1" />
 <processor type="test2" />
 <processor type="test3" />
</test>
<!-- Patch file -->
<test>
 <processor type="testA" patch:before = "processor@type='test2'"/>
</test>

実行時に使用される構成は以下の通りです:

<test>
 <processor type="test1" />
 <processor type="testA" />
 <processor type="test2" />
 <processor type="test3" />
</test>

## 特定の要素の後に要素を挿入する

特定の既存の要素の後に構成要素を挿入することができます。この例では、構成内のtest2の位置に関係なく、test2型のプロセッサをプロセッサに挿入します。

<!-- Sitecore.config -->
<test>
 <processor type="test1" />
 <processor type="test2" />
 <processor type="test3" />
</test>
<!-- Patch file -->
<test>
 <processor type="testA" patch:after = "processor@type='test2'"/>
</test>

実行時に使用される構成は以下の通りです:

<test>
 <processor type="test1" />
 <processor type="test2" />
 <processor type="testA" />
 <processor type="test3" />
</test>

## 属性の追加や更新

新しい属性を追加したり、既存の属性の値を更新したりできます。属性がすでに存在している場合は、その既存の値がパッチファイルの値に置き換えられます。属性がmysiteにまだ存在していなければ、mysiteに追加されます。この効果を得るには、patch名前空間またはset名前空間のいずれかを使用できます。

この例では、mysiteサイトにdomainPath属性を追加し、/homeに設定し、virtualFolder属性を/sitecore modules/webに変更しています:

<!-- Sitecore.config -->
<sites>
 <site name="mysite" virtualFolder="/"></site>
</sites>

このパッチファイルはpatch名前空間を使って属性を変更します:

<!-- Patch file -->
<sites>
 <site name="mysite" virtualFolder="/">
 <patch:attribute name="domainPath">/home</patch:attribute>
 <patch:attribute name="virtualFolder">/sitecore modules/web</patch:attribute>
 </site>
</sites>

このパッチファイルはset名前空間を使って同じ結果を得ています:

<!-- Patch file -->
<sites>
 <site name="mysite" virtualFolder="/" set:domainPath="/home" set:virtualFolder="/sitecore modules/web"></site>
</sites>

最終的な結果は両方のパッチファイルで同じです。実行時に使用される構成は以下の通りです:

<sites>
 <site name="mysite" domainPath="/home" virtualFolder="/sitecore modules/web"></site>
</sites>

## 要素の削除

構成要素はpatch:deleteで削除できます。削除すべき要素を特定するために、その要素ノードのname属性を指定します。

> !重要patch:deleteを使う際は注意してください。なぜなら、実行時に指定された要素とそのすべての属性を構成から削除してしまうからです。

例えば、以下のSitecore設定は以下の通りです:

<!-- Sitecore config -->
<sitecore>
 <element name="a"/>
 <element name="b"/>
 <element name="c"/>
</sitecore>

対応するパッチ設定は要素「b」を削除します:

<!-- Patch file -->
<sitecore>
 <element name="b">
 <patch:delete />
 </element>
</sitecore>

実行時に使用される構成は以下の通りです:

<sitecore>
 <element name="a"/>
 <element name="c"/>
</sitecore>

もしその要素に名前属性がない場合は、削除すべき要素とそのすべての属性をリストアップし、patch:delete要素を含めることができます。例えば、以下は設定ファイルです:

<sitecore>
  <element type="example" value="foo" />
  <element type="example" value="bar" />
</sitecore>

そしてこれが対応するパッチファイルです:

<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
  <sitecore>
    <element type="example" value="foo">
      <patch:delete />
    </element>
  </sitecore>
</configuration>

実行時の結果として得られる構成は次の通りです:

<sitecore>
  <element type="example" value="bar" />
</sitecore>

## 要素の値の置換

patch:instead属性を使って、選択した要素を兄弟要素の代わりに挿入するよう指定します。patch:beforeやpatch:afterとは異なり、この属性は元のノードや要素を完全に置き換えることを可能にします。

構文は以下の通りです:

<processor type="CustomC, CustomA" patch:instead="\*@type='Sc, Sc'" />

<!-- Sitecore.config -->
<sitecore>
 <element name="a"/>
 <element name="b"/>
 <element name="c"/>
</sitecore>
<-- Patch file -->
<sitecore>
 <element name="d" patch:instead="\*@name='b'"/>
</sitecore>

実行時に使用される構成は以下の通りです:

<sitecore>
 <element name="a"/>
 <element name="d"/>
 <element name="c"/>
</sitecore>