l1 = [1,2,3,4,5]
l2 = ["a","b","c"]
Run Code Online (Sandbox Code Playgroud)
l3 = [(1,"a"),(2,"b"),(3,"c"),(4,"a"),(5,"b")]
Run Code Online (Sandbox Code Playgroud)
所以基本上我想加入两个列表,当它们的长度不同时,我必须通过从头开始重复来传播其他列表中的项目。
使用 zip() 但它对这种情况不利,因为它以相等的长度连接
>>> list(zip(l1,l2))
[(1, 'a'), (2, 'b'), (3, 'c')]
Run Code Online (Sandbox Code Playgroud) 我四处搜索并找到了一些关于 xsl:key 和 key() 函数的教程,但不知何故,我显然仍然缺少一些理解。
我需要进行 XML-XML 转换,其中包括大约 10 个字段,您必须在这些字段中从源 XML 获取字符串值,从适当的查找表(提供)中找到适当的数字代码,并将这些代码放入生成的 XML 中。
我有一个这样做的工作版本 xsl:for-each for lookup table,但我怀疑它是次优的,想知道我是否应该使用 select="key('CR-Lookup',$CR)" 而不是 somhow .
所以,我想做的是(树的深处):
<Contributor>
<ContributorRole>producer</ContributorRole>
<ContributorName>Anglet, J.</ContributorName>
</Contributor>
Run Code Online (Sandbox Code Playgroud)
变成这样的东西:
<Contributor>
<ContributorRole id="7" code="818"/>
<Value id="Name">Anglet, J.</Value>
</Contributor>
Run Code Online (Sandbox Code Playgroud)
我制作的文件如下:
查找表文件lookup_ContributorRole.xml:
<lookup id="ContributorRole">
<row>
<id>7</id>
<parentid>NULL</parentid>
<valueMember>1</valueMember>
<displayMember>producer</displayMember>
<code>818</code>
<externalId>NULL</externalId>
<description>NULL</description>
</row>
<!-- more <row>s...-->
</lookup>
Run Code Online (Sandbox Code Playgroud)
Amd XSLT 文件,我尝试在其中进行匹配:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:foxml="info:fedora/fedora-system:def/foxml#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rel="info:fedora/fedora-system:def/relations-external#"
xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema"
xmlns:audit="info:fedora/fedora-system:def/audit#"
xmlns:fedoraxsi="http://www.w3.org/2001/XMLSchema-instance"
exclude-result-prefixes="xsl foxml rdf rel oai_dc dc xsi audit …Run Code Online (Sandbox Code Playgroud)