Хочешь получить предшественника - PullRequest
0 голосов
/ 11 февраля 2019

Я анализирую XML, как показано ниже,

<Service>
 <ServiceName>
 <Plans>
 <Plan>
    <PlanNumber>A</PlanNumber>
    ....
  </Plan>
 </Plans>
</Service>

<Service>
<ServieName>
 <Plans>
 <Plan>
    <PlanNumber>B</PlanNumber>
    ....
  </Plan>
 </Plans>
</Service>

Я перебираю for-each Plans/Plan и пытаюсь напечатать preceding-sibling::Plan/PlanNumber, я ничего не получаю.

Я хочу этоитерировать уникальный номер плана, поэтому я использую оператор if рядом с for-each.<xsl-if test="not(PlanNumber = preceding-sibling::Plan/PlanNumber)">

Я не получаю номера планов.

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

В вашем примере есть только один Plan в Plans (и только один Plans в Service).Это означает, что Plan не имеет братьев и сестер, а ваша попытка preceding-sibling::Plan/PlanNumber ничего не выбирает.

Чтобы получить предыдущий PlanNumber из контекста Plan, вам необходимо выполнить:

../../preceding-sibling::Service/Plans/Plan/PlanNumber

или:

preceding::PlanNumber
0 голосов
/ 11 февраля 2019
<xsl:foreach select="Plan">
    <xsl:foreach select="PlanNumber">
        <xsl:if test="position()!=1">
            <xsl:value-of select="preceding-sibling::text()"/>
        </xsl:if>
    </xsl:foreach>
</xsl:foreach>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...