Подстрока XPath - PullRequest
       2

Подстрока XPath

4 голосов
/ 23 февраля 2012

У меня есть XML-файл, который мне нужно преобразовать с помощью сценария XSL.

Ниже приведен пример канала. Мне нужно извлечь текст в элементе NameLabel, но мне нужен текст только между первыми двумя черточками.

Например, я хочу A в строке ниже:

NTX- A -20120131-0006

Я не очень разбираюсь в XPath, поэтому я изо всех сил стараюсь составить выражение, однако я предполагаю, что мне нужно использовать substring- (после | before). Я просто не знаю, как.

Пример XML:

<NewsML>
    <NewsItem>
        <Identification>
            <NameLabel>NTX-A-20120131-0006</NameLabel>
        </Identification>
    </NewsItem>
</NewsML>

Edit:

Я использую xslt 1.0

Ответы [ 3 ]

8 голосов
/ 23 февраля 2012
substring-before(s1,s2) and substring-after(s1,s2) would work.

substring-before(substring-after(NewsML/NewsItem/Identification/NameLabel,'-'),'-')
1 голос
/ 24 февраля 2012

Если вы используете XSLT 2.0, то лучшим выражением будет:

fn:replace( NewsItem/NewsML/Identification, "^.*-(.)-.*$", $1)

Но если вы застряли с XSLT 1, тогда ответьте на ответ Афея.

1 голос
/ 23 февраля 2012

1001 * попробовать *

<xsl:template match="/">
  <xsl:apply-templates select="NewsItem/NewsML/Identification"/>
</xsl:template>

<xsl:template match="Identification">
    <xsl:value-of select="substring-before(substring-after(NameLabel,'-'),'-'))"/>
</xsl:template>

но я не смог проверить это

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