【发布时间】:2014-06-23 09:01:08
【问题描述】:
如果有多个其他节点具有相同的属性,我如何修补指定的节点?
我需要在 ContentSearch 部分为捷克语修补分析器,但所有节点都以
部分配置如下所示
...</maEntry>
<mapEntry type="Sitecore.ContentSearch.LuceneProvider.Analyzers.PerExecutionContextAnalyzerMapEntry, Sitecore.ContentSearch.LuceneProvider">
<param hint="executionContext" type="Sitecore.ContentSearch.CultureExecutionContext, Sitecore.ContentSearch">
<param hint="cultureInfo" type="System.Globalization.CultureInfo, mscorlib">
<param hint="name">ar-AE</param>
</param>
</param>
<param desc="analyzer" type="Sitecore.ContentSearch.LuceneProvider.Analyzers.DefaultPerFieldAnalyzer, Sitecore.ContentSearch.LuceneProvider">
<param desc="defaultAnalyzer" type="Lucene.Net.Analysis.AR.ArabicAnalyzer, Lucene.Net.Contrib.Analyzers">
<param hint="version">Lucene_30</param>
</param>
</param>
</mapEntry>
<mapEntry type="Sitecore.ContentSearch.LuceneProvider.Analyzers.PerExecutionContextAnalyzerMapEntry, Sitecore.ContentSearch.LuceneProvider">
<param hint="executionContext" type="Sitecore.ContentSearch.CultureExecutionContext, Sitecore.ContentSearch">
<param hint="cultureInfo" type="System.Globalization.CultureInfo, mscorlib">
<param hint="name">pt-BR</param>
</param>
</param>
<param desc="analyzer" type="Sitecore.ContentSearch.LuceneProvider.Analyzers.DefaultPerFieldAnalyzer, Sitecore.ContentSearch.LuceneProvider">
<param desc="defaultAnalyzer" type="Sitecore.ContentSearch.LuceneProvider.Analyzers.Contrib.BrazilianAnalyzer, Sitecore.ContentSearch.LuceneProvider">
<param hint="version">Lucene_30</param>
</param>
</param>
</mapEntry>
<mapEntry type="Sitecore.ContentSearch.LuceneProvider.Analyzers.PerExecutionContextAnalyzerMapEntry, Sitecore.ContentSearch.LuceneProvider">
<param hint="executionContext" type="Sitecore.ContentSearch.CultureExecutionContext, Sitecore.ContentSearch">
<param hint="cultureInfo" type="System.Globalization.CultureInfo, mscorlib">
<param hint="name">cs-CZ</param>
</param>
</param>
<param desc="analyzer" type="Sitecore.ContentSearch.LuceneProvider.Analyzers.DefaultPerFieldAnalyzer, Sitecore.ContentSearch.LuceneProvider">
<param desc="defaultAnalyzer" type="Lucene.Net.Analysis.Cz.CzechAnalyzer, Lucene.Net.Contrib.Analyzers">
<param hint="version">Lucene_30</param>
</param>
</param>
</mapEntry>
<mapEntry>...
我需要修补(在我们的示例中)第二个节点中的 defaultAnalyzer。但是第二个节点不是现实生活中的第二个,但它可能是第三个,第七个等等......我想我需要通过指定的内部节点找到“mapEntry”节点。
如果我用这个
<map hint="list:Add">
<!-- Patch analyzer for Czech language -->
<mapEntry type="Sitecore.ContentSearch.LuceneProvider.Analyzers.PerExecutionContextAnalyzerMapEntry, Sitecore.ContentSearch.LuceneProvider">
<param desc="analyzer" type="Sitecore.ContentSearch.LuceneProvider.Analyzers.DefaultPerFieldAnalyzer, Sitecore.ContentSearch.LuceneProvider">
<param desc="defaultAnalyzer" type="Lucene.Net.Analysis.Cz.CzechAnalyzer, Lucene.Net.Contrib.Analyzers">
<patch:attribute name="type">MySolution.MetroAsciiFoldingAnalyzer, MySolution</patch:attribute>
</param>
</param>
</mapEntry>
</map>
它将修补第一个节点。
我在这个问题Select node based on child node value in Web.config Transform 中发现了类似的东西,但据我所知,我会用我的自定义节点替换整个节点,但是....有必要吗?
【问题讨论】:
标签: search attributes sitecore nodes patch