按元素链接xml数据
我有以下xml文件按元素链接xml数据,xml,xslt,Xml,Xslt,我有以下xml文件 <musicLibrary> <compilation id="C01" title="Best of something"> <title no="1" name="firstOne"> <fileID>F01</fileID> </title> <title no="2" name="secondOne"> <fileID>
<musicLibrary>
<compilation id="C01" title="Best of something">
<title no="1" name="firstOne">
<fileID>F01</fileID>
</title>
<title no="2" name="secondOne">
<fileID>F02</fileID>
</title>
<title no="3" name="thirdOne">
<fileID>F03</fileID>
</title>
<title no="4" name="fourthOne">
<fileID>F04</fileID>
<fileID>F05</fileID>
</title>
</compiltion>
<compilation id="C02" title="Best of another thing">
...
</compilation>
<files>
<file id="F01">
<filename>soundFile8.mp3</filename>
<size>3.456</size>
<length>3.23</length>
</file>
<file id="F02">
<filename>soundFile2.mp3</filename>
<size>3.456</size>
<length>3.23</length>
</file>
<file id="F03">
<filename>soundFile7.mp3</filename>
<size>3.456</size>
<length>3.23</length>
</file>
<file id="F04">
<filename>soundFile5.mp3</filename>
<size>3.456</size>
<length>3.23</length>
</file>
<file id="F05">
<filename>soundFile3.mp3</filename>
<size>3.456</size>
<length>3.23</length>
</file>
</files>
</musicLibrary>
F01
F02
F03
F04
F05
...
声音文件8.mp3
3.456
3.23
声音文件2.mp3
3.456
3.23
声音文件7.mp3
3.456
3.23
声音文件5.mp3
3.456
3.23
声音文件3.mp3
3.456
3.23
是否可以仅通过提供集合id从文件中检索信息,例如一次编译的播放时间总共有多长?我真的被这件事缠住了。:/
我真的错过了一些东西,比如来自SQL的连接;)
提前谢谢 这可以通过使用xpath的XSLT样式表来完成(您可以将其视为XSLT的连接等价物)。在此样式表中,返回每个编译的长度总和:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="musicLibrary">
<xsl:apply-templates select="compilation"/>
</xsl:template>
<xsl:template match="compilation">
<xsl:variable name="ids" select="title/fileID"/>
<compilation id="{@id}" title="{@title}">
<xsl:attribute name="total-length">
<xsl:value-of select="sum(//files/file[@id = $ids]/length)"/>
</xsl:attribute>
</compilation>
</xsl:template>
</xsl:stylesheet>
输出:
<compilation id="C01" title="Best of something" total-length="16.15"/>
这是XML解析器的问题。大多数语言都有它们,例如Python、Perl.Hmm,XSLT和Xpath等等难道不可能吗?我在考虑使用模板之类的东西。我设法用它获得了编译的所有歌曲,但我真的不知道如何让它将标题的FileID链接到文件的id属性,从而获得编译的总长度:(像SQL中的连接将非常有用:)我已经很久没有使用XSLT了,所以我不确定这一点。我只知道这在几乎任何现代编程或脚本语言中都是相当微不足道的。^^确实是这样,但必须有一种方法来实现它。。。事实上,我对自己没有完成这件事感到非常不安。看起来很简单,但我现在找不到线索(顺便说一句,谢谢你的快速回答!!基于XSLT的解决方案非常简单,相当类似于SQL中的解决方案,但是使用xpath谓词而不是连接。哦,你是我的人!!我是对的,太容易看到了;)非常感谢你救了我一个晚上。现在我可以不流泪,不去想我的愚蠢:)我想的方向完全错了;)这是双向的。花更多时间使用XSLT,您也会忘记SQL—我知道我已经忘记了;)嗯,我还看不出XML/XSLT等的巨大优势,但这可能是因为我对它完全陌生。在我看来,这仍然是混乱的,真的很容易,事情似乎真的很麻烦。但我猜原因是我:)Buuuuuut我还在学习^^