XSLT - Как выбрать атрибут XML Атрибутом?

В этом случае вы должны иметь возможность использовать директиву *ngIf, предоставляемую самим Angular, вот так.

// page.component.html
<nb-alert status="success" closable (close)="onClose()" *ngIf="alertIsOpen">
  You have been successfully authenticated!
</nb-alert>
alertIsOpen = true;

// page.component.ts
onClose() {
  // fires after each click on close button:
  console.log('close button was clicked');
  this.alertIsOpen = false;
}

Другой подход, который также будет работать для нескольких предупреждений, заключается в том, чтобы ваши предупреждения существовали в массиве.

// page.component.html
<ng-container *ngFor="alert of alerts">
 <nb-alert status="{{alert.status}}" closable (close)="onClose(alert)">
   {{alert.text}}
 </nb-alert>
</ng-container>
alerts = [
 {
   status: "success",
   text: "You have been successfully authenticated!"
 },
 {
   status: "danger",
   text: "Failed to authenticate!"
 }
]

// page.component.ts
onClose(alert) {
  // fires after each click on close button:
  console.log('close button was clicked');
  this.alerts.splice(this.alerts.indexOf(alert), 1);
}

Преимущество этих подходов состоит в том, что вы не сохраняете оповещение, существующее в вашей DOM

25
задан Deduplicator 1 February 2015 в 14:10
поделиться

5 ответов

Просто удалите косую черту после Data и добавьте корень:

<xsl:variable name="myVarA" select="/root/DataSet/Data[@Value1='2']/@Value2"/>
47
ответ дан phihag 28 November 2019 в 20:43
поделиться

Существует две проблемы с Вашим xpath - сначала необходимо удалить дочерний селектор из после Data как упомянутый phihag. Также Вы забыли включать root в свой xpath. Вот то, что Вы хотите сделать:

select="/root/DataSet/Data[@Value1='2']/@Value2"
4
ответ дан Andrew Hare 28 November 2019 в 20:43
поделиться

Попробуйте

xsl:variable name="myVarA" select="//DataSet/Data[@Value1='2']/@Value2" />

«//» будет искать DataSet на любой глубине

1
ответ дан paul 28 November 2019 в 20:43
поделиться

Примечание: использованием//в начале xpath является немного ЦП intensitve - это будет искать каждый узел соответствие. Используя более определенный путь, такой как/root/DataSet создаст более быстрый запрос.

1
ответ дан pixel 28 November 2019 в 20:43
поделиться

Я бы сделал это, создав переменную, которая будет указывать на узлы, которые имеют правильное значение в Value1, а затем сослаться на t

<xsl:variable name="myVarANode" select="root//DataSet/Data[@Value1='2']" />
<xsl:value-of select="$myVarANode/@Value2"/>

Ответы всех остальных тоже правильные - более правильные на самом деле, так как я не не замечайте лишнюю косую черту в вашем XPATH, которая может испортить ситуацию. Тем не менее, это также будет работать и может работать для разных целей, поэтому сохраните этот метод в своем наборе инструментов.

0
ответ дан Stephen Friederichs 28 November 2019 в 20:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: