Xml XSLT:在XSLT中创建和存储映射
我是xslt新手,所以请对我放松点。我有一个这样的xmlXml XSLT:在XSLT中创建和存储映射,xml,xslt,xpath,Xml,Xslt,Xpath,我是xslt新手,所以请对我放松点。我有一个这样的xml <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" version="1.0"?> <process> <groups> <group id="sid-17d5a8eaba5e4313bd4958e74f25d3df" name="GroupA">
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" version="1.0"?>
<process>
<groups>
<group id="sid-17d5a8eaba5e4313bd4958e74f25d3df" name="GroupA">
<person-ref>sid-446515B9-2247-4657-A612-4693825B1ACF</person-ref>
<person-ref>sid-A57CAAA3-5FBA-4E8B-B530-A69571FDDF9A</person-ref>
<person-ref>sid-CFEC4F6D-2614-4887-90DE-9FE13AE44091</person-ref>
</group>
<group id="sid-d9dc88f7077046e9825e87c349d75909" name="GroupB">
<person-ref>sid-BE136A0A-3A44-4C4A-B661-6F606D64AA94</person-ref>
<person-ref>sid-E9C5B00D-BF64-4560-96E4-EE111CC98AB4</person-ref>
<person-ref>sid-B2217776-D570-43A7-8110-A11026389EE5</person-ref>
</group>
</groups>
<persons>
<person id="sid-446515B9-2247-4657-A612-4693825B1ACF"/>
<person id="sid-B2217776-D570-43A7-8110-A11026389EE5"/>
</persons>
</process>
sid-446515B9-2247-4657-A612-4693825B1ACF
sid-A57CAAA3-5FBA-4E8B-B530-A69571FDDF9A
sid-CFEC4F6D-2614-4887-90DE-9FE13AE44091
sid-BE136A0A-3A4-4C4A-B661-6F606D64AA94
sid-E9C5B00D-BF64-4560-96E4-EE111CC98AB4
sid-B2217776-D570-43A7-8110-A11026389EE5
我最喜欢的是得到每个人对应的群体,比如:
<persons>
<person id="sid-446515B9-2247-4657-A612-4693825B1ACF">
<Link name="GroupA" targetId="sid-17d5a8eaba5e4313bd4958e74f25d3df" />
</person>
<person id="sid-B2217776-D570-43A7-8110-A11026389EE5">
<Link name="GroupB" targetId="sid-d9dc88f7077046e9825e87c349d75909" />
</person>
</persons>
我的方法是创建一个组的映射,然后将其全局存储。我已经在互联网上做了一些研究,但是xslt似乎让我们很难创建地图
我的方法是创建一个组映射,然后存储它
全球范围内
我不知道你所说的“创建组的映射,然后全局存储”是什么意思。这里的首选方法是使用a从相应的组中查找数据:
XSLT1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:key name="my-group" match="group" use="person-ref" />
<xsl:template match="/process">
<persons>
<xsl:for-each select="persons/person">
<xsl:variable name="group" select="key('my-group', @id)" />
<person id="{id}">
<Link name="{$group/@name}" targetId="{$group/@id}" />
</person>
</xsl:for-each>
</persons>
</xsl:template>
</xsl:stylesheet>
我的方法是创建一个组映射,然后存储它
全球范围内
我不知道你所说的“创建组的映射,然后全局存储”是什么意思。这里的首选方法是使用a从相应的组中查找数据:
XSLT1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:key name="my-group" match="group" use="person-ref" />
<xsl:template match="/process">
<persons>
<xsl:for-each select="persons/person">
<xsl:variable name="group" select="key('my-group', @id)" />
<person id="{id}">
<Link name="{$group/@name}" targetId="{$group/@id}" />
</person>
</xsl:for-each>
</persons>
</xsl:template>
</xsl:stylesheet>
试试这个
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" />
<xsl:key name="my-group" match="group" use="person-ref" />
<xsl:template match="/process/groups">
<persons>
<xsl:for-each select = "group/person-ref">
<xsl:variable name="ref" select="." />
<xsl:variable name="group" select="key('my-group', $ref)" />
<person id="{$ref}">
<Link name="{$group/@name}" targetId="{$group/@id}" />
</person>
</xsl:for-each>
</persons>
</xsl:template>
</xsl:stylesheet>
试试这个
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" />
<xsl:key name="my-group" match="group" use="person-ref" />
<xsl:template match="/process/groups">
<persons>
<xsl:for-each select = "group/person-ref">
<xsl:variable name="ref" select="." />
<xsl:variable name="group" select="key('my-group', $ref)" />
<person id="{$ref}">
<Link name="{$group/@name}" targetId="{$group/@id}" />
</person>
</xsl:for-each>
</persons>
</xsl:template>
</xsl:stylesheet>
那不是XML:那不是XML:你为什么要发布这个?它不会生成请求的输出。嗯。。我想是的。看,我知道它没有,因为我运行了它。你用什么处理器?任何处理器。您的输出有6个person
节点。请求的输出有2个。你真的需要我告诉你吗?你为什么要发这个?它不会生成请求的输出。嗯。。我想是的。看,我知道它没有,因为我运行了它。你用什么处理器?任何处理器。您的输出有6个person
节点。请求的输出有2个。你真的需要我告诉你吗?