2015-06-29 2 views
0

У меня есть следующий XML.Получить имя файла, в котором содержимое присутствует в

<?xml version="1.0" encoding="UTF-8"?> 
<entry> 
    <file name="FILE_ORD_01.xml"/> 
    <file name="FILE_ORD_02.xml"/> 
    <file name="FILE_ORD_03.xml"/> 
    <file name="FILE_ORD_04.xml"/> 
    <file name="FILE_ORD_05.xml"/> 
</entry> 

В основном это список файлов в моей папке В каждом файле XML есть фраза.

и Я другой XML-файл, где мне нужно, чтобы получить phrase значения сравнить их со значениями фраз в этом списке и дать в каком списке находится этот phrase присутствует в.

<xsl:variable name="prent"> 
        <xsl:for-each select="document('C:\Users\u0138039\Desktop\Proview\MY\2015\title.xml')/entry/file"> 
         <xsl:value-of select="normalize-space(document(concat('C:\Users\u0138039\Desktop\Proview\MY\2015\',./@name))/chapter[//page/@num=regex-group(1)])"/> 
        </xsl:for-each> 
       </xsl:variable> 

с помощью этого кода я могу видеть, в каком файле находится совпадение фразы, найденное, например, если совпадение найдено в FILE_ORD_03.xml. Я хочу напечатать FILE_ORD_03

Здесь в основном я хочу получить имя файла, в котором эта фраза присутствует от в приведенном выше списке и распечатать его значение. с помощью base-uri() или получить значение атрибута непосредственно

Благодаря

ответ

1

Я не думаю, что вы можете извлечь значение из переменной, как у вас есть просто текстовые узлы с нормированным строковым значением, но я думаю, что вы хотите что-то вдоль линий

<xsl:variable name="file-names" as="xs:string*" 
    select="document(document('file:///C:/Users/u0138039/Desktop/Proview/MY/2015/title.xml')/entry/file/@name)/chapter[//page/@name = regex-group(1)]/substring-before(tokenize(document-uri(/), '/')[last()], '.')"/> 

, чтобы извлечь имя файла (ов) согласования файл (ы) в виде последовательности строк во вторую переменную.

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