2016-11-15 20 views
2

XMLファイル内のノード(設定ファイルなど)を「変換する必要があります」とマークすることは可能ですか?変換ファイル内で指定しないと変換が失敗する可能性はありますか?XMLノードを「変換する必要があります」とマークすることは可能ですか?

たとえば、次のようを変換しなければならないノードとの.configファイルの例作ら取る:キー値がMustBeTransformedとしてマークされているので

<?xml version="1.0"?> 
<configuration> 

    <appSettings> 
    <!-- Mark this key to be transformed --> 
    <add key="MyValue" MustBeTransformed="true" /> 
    </appSettings> 
    <system.web> 
     <compilation debug="true" targetFramework="4.5.2" /> 
     <httpRuntime targetFramework="4.5.2" /> 
    </system.web> 

</configuration> 

を、以下のことがあることを確実にするでしょう正しく変換:

<?xml version="1.0" encoding="utf-8"?> 

<!-- For more information on using web.config transformation visit http://go.microsoft.com/fwlink/?LinkId=125889 --> 

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <appSettings> 
    <!-- Without the line below, the transform would fail --> 
    <add key="MyValue" xdt:Transform="Set a value" /> 
    </appSettings> 
    <system.web> 
    <compilation xdt:Transform="RemoveAttributes(debug)" /> 
    </system.web> 
</configuration> 

私はので、私はこれだけは.ps1スクリプトとXPathを使用して可能であることを見てきた瞬間に、これを尋ねる

+0

「変換する必要があります」と正確には何を意味していますか? "xsl:apply-templates'命令で選択する必要がありますか、または"組み込みテンプレートルール以外のテンプレートルールと一致する必要がある "という意味ですか、それとも、たとえば'xsl:for-each'または' xsl:copy-of'命令? –

+0

これは良い質問です。私はどのような変換が起こっても、それぞれのキーに値が提供されていることを確認したいと思います。ノード上に属性が設定されていると、私が推測する良いスタートになります – Luke

答えて

1

ノードを「変換する必要があります」とマークしたい場合、のデータのみがのXMLツリーである場合は、マークを付けてXMLを変更する必要があります。

予約属性MustBeTransformedをノードに追加するか、予約されたタグにノードをラップすることでこれを行うことができます。変換を適用してから、これらの予約属性/タグがまだ存在するかどうかを確認する必要があります。

XML自体にマークを付けたくない場合、 "mustbetransformed"シグナルは定義上、XMLの外側になければなりません。今あなたは何かを指摘する必要があります。 XPATH式のセットを書き留めて、変換が必要なノードを「指す」ようにすることができます。これは脆弱です。なぜなら、変換がXMLサブツリーの周りを動く可能性があり、XPATHが調整されないと無効になる可能性があります。

関連する問題