获取内容所在的文件名

Get file name where the content is present in

我有以下 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\MY15\title.xml')/entry/file">
                        <xsl:value-of select="normalize-space(document(concat('C:\Users\u0138039\Desktop\Proview\MY15\',./@name))/chapter[//page/@num=regex-group(1)])"/>
                    </xsl:for-each>
                </xsl:variable>

使用此代码,我可以看到在哪个文件中找到了短语匹配项,例如,如果在 FILE_ORD_03.xml 中找到了匹配项,我想打印 FILE_ORD_03

基本上我想从上面的列表中获取包含该短语的文件名并打印它的值。通过使用 base-uri() 或直接获取属性值

谢谢

我不认为您可以从变量中提取值,因为您只有带有规范化字符串值的文本节点,但我认为您需要类似于

的内容
<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()], '.')"/>

将匹配文件的文件名作为字符串序列提取到第二个变量中。