2014-10-11 2 views
1

Например, для этого XML,Хотите выбрать только прописной текст в XPath

<h1 item="name">HIDE and SEEK</h1> 

Я хочу выход быть

HIDE SEEK 

Возможно ли это?

+0

Что версия XPath вы используете? Что относительно символов, которые не являются буквами, например. числа, пунктуации и т. д.? –

+0

Использование Xpath 1.0. Это только буквы/цифры, никаких специальных символов. @ MathiasMüller – Hideandseek

+1

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

ответ

3

Поскольку мы не знаем, какую версию вы используете, следующее выражение XPath справедливо как с XPath 1.0 и 2,0

normalize-space(translate(//h1,'abcdefghijklmnopqrstuvwxyz','')) 

В XPath 2.0 решение может быть немного более элегантно.

Обратите внимание, что это касается только строчных букв, но не цифр, знаков препинания или любого другого символа. Несколько пробелов нормализуются до одного места.

XSLT 1.0 таблицы стилей для иллюстрации

<?xml version="1.0" encoding="UTF-8" ?> 
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
    <xsl:output method="text"/> 

    <xsl:template match="/"> 
     <xsl:value-of select="normalize-space(translate(//h1,'abcdefghijklmnopqrstuvwxyz',''))"/> 
    </xsl:template> 

</xsl:transform> 

XML Input

<h1 item="name">HIDE and SEEK</h1> 

Выход

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