2012-03-14 1 views
10

я иметь следующий узел в web.config:XDT преобразование локатора, соответствующий контент вложенного узла

<configuration> 
... 
<scheduling> 
<agent> 
    <param desc="database">core</param> 
</agent> 
<agent> 
    <param desc="database">master</param> 
</agent> 
</scheduling> 
... 
</configuration> 

я хочу, чтобы удалить весь <agent> узел с узлом ребенка пар с мастером-контентом. более или менее мой XDT преобразования узел выглядит следующим образом:

<configuration> 
... 
<scheduling> 
    <agent 
     xdt:Transform="Remove" 
     xdt:Locator="XPath(./param[@desc='database']/??????)" /> 
</scheduling> 
... 
</configuration> 

, как вы видите, я понятия не имею, как соответствовать строкой содержимого узла. Что мне нужно добавить сюда?

окружающей среды отмечает: Windows 7 - Visual Studio 2010 SP1

ответ

9

Добавить дополнительный тест для text() в локатора. Чтобы соответствовать <param> узел:

xdt:Locator="XPath(./param[@desc='database' and text()='master'])"> 

EDIT: Для того, чтобы соответствовать <agent> узел, который нужно переместить param в предикат, который XPath является соответствие:

xdt:Locator="Condition(param/@desc='database' and param/text()='master')"> 
+0

СММ странным, это просто удаление <парам desc = "database"> master 'node, оставив узел lurscher

+0

Я думаю, что у вас было '' в кавычках в вашем исходном сообщении, и оно не отображается правильно (попробуйте отредактировать сообщение, чтобы узнать, можете ли вы его показать ? Вам нужно поместить backticks вокруг него). Я отредактировал свой ответ с тем, как сопоставить узел ''. – bouteillebleu

+0

Вы правы, отредактировано – lurscher