2016-03-11 1 views
0

Используя XSL, я пытаюсь получить первый предыдущий текст {Male/Female} до текущего узла {field}. Количество элементов между {Поле} и предыдущим текстовым элементом будет отличаться. Любая помощь будет принята с благодарностью.XSL - как найти и получить первый предыдущий текст для текущего узла

<tablecell> 
    <par def="2">Male/Female</par> 
</tablecell> 
<tablecell> 
    <par def="3"> 
     <field usenotesstyle="false" 
       height="0.2500in" 
       width="1in" 
       multiline="true" 
       borderstyle="single" 
       lookupeachchar="false" 
       lookupaddressonrefresh="false" 
       type="keyword" 
       kind="editable" 
       name="Sex"> 
      <keywords helperbutton="false" 
         columns="1" 
         ui="listbox"> 
       <textlist> 
        <text>Male</text> 
        <text>Female</text> 
       </textlist> 
      </keywords> 
     </field> 
    </par> 
</tablecell> 
+0

СПАСИБО !! ! Второе предложение работает –

+0

Если на ваш вопрос ответили, пожалуйста, закройте его, приняв ответ. –

+0

Я только заметил, что есть некоторые предыдущие текстовые элементы, которые я не хочу включать. Например, « ItemStatus =« Найдено »». Если я впервые столкнулся с этим, я хочу продолжить переход к следующему предыдущему. Это возможно? Итак, пропустите формулу и продолжайте смотреть назад –

ответ

1

Я пытаюсь получить первый предыдущий текст {мужчина/женщина} к текущего узла {поля}

Как насчет:

<xsl:value-of select="preceding::text()[1]"/> 
+0

Возможно, вам нужно указать 'previous :: text() [not (normalize-space() = '')] [1]', чтобы избежать совпадения текстового узла с пробелом между начальным тегом 'par' и start-tag 'field'. –

+0

@ C.M.Sperberg-McQueen Чаще всего, у меня будет '' в верхней части моей таблицы стилей. Поэтому, когда у вас есть точка, реальная точка здесь заключается в том, чтобы всегда работать с полным примером, а не с фрагментами, взятыми из контекста. –

Смежные вопросы