我的知识是XSLT可悲的是“有点有限”,但也许可以帮上忙或指明方向:
这是我的基本XML文件
<?xml version="1.0" standalone="yes"?>
<Topobase>
<TB_GN_DIALOG>
<ID>13</ID>
<AUTOGRIDORDER>1</AUTOGRIDORDER>
</TB_GN_DIALOG>
<FORMS_VERSION>
<Version>11000011</Version>
</FORMS_VERSION>
<TB_GN_CONTROL>
<ID>32304</ID>
<ALLOWREFERENCE>1</ALLOWREFERENCE>
</TB_GN_CONTROL>
<TB_GN_CONTROL>
<ALLOWREFERENCE>1</ALLOWREFERENCE>
<ID>32305</ID>
<ASSEMBLYNAME>Autodesk.Map.IM.Forms.DLL</ASSEMBLYNAME>
</TB_GN_CONTROL>
<TB_GN_DIALOG>
<ID>1543</ID>
<AUTOGRIDORDER>1</AUTOGRIDORDER>
</TB_GN_DIALOG>
.....
这个想法是要排序两次: a)主要元素应按字母顺序分为“组”:
<Topobase>
<FORMS_VERSION>
...
<TB_GN_CONTROL>
....
<TB_GN_CONTROL>
....
<TB_GN_DIALOG>
...
<TB_GN_DIALOG>
...
b)在分组的元素内,应按
进行排序 <TB_GN_DIALOG>
...<ID>13</ID>...
<TB_GN_DIALOG>
...<ID>28</ID>...
<TB_GN_DIALOG>
...<ID>542</ID>...
<TB_GN_DIALOG>
...<ID>678</ID>...
我在这里发现一些XSLT朝着这个方向发展,但是有些仅按名称或按属性。但是“组”和子元素的这种奇怪的混合可能有点棘手。
谢谢!
编辑: 添加了完整的XML示例
<Topobase>
<FORMS_VERSION>
<Version>11000011</Version>
</FORMS_VERSION>
<TB_GN_DIALOG>
<ID>1175</ID>
<AUTOGRIDORDER>1</AUTOGRIDORDER>
<AUTOTABORDER>1</AUTOTABORDER>
<CAPTION>Normschacht</CAPTION>
<DEFAULTHEIGHT>1022</DEFAULTHEIGHT>
<DEFAULTISDOCKED>0</DEFAULTISDOCKED>
<DEFAULTLEFT>1820</DEFAULTLEFT>
<DEFAULTMODE>1</DEFAULTMODE>
<DEFAULTTAB>1</DEFAULTTAB>
<DEFAULTTABSVISIBLE>1</DEFAULTTABSVISIBLE>
<DEFAULTTOP>85</DEFAULTTOP>
<DEFAULTWIDTH>893</DEFAULTWIDTH>
<DETAILHEIGHT>100</DETAILHEIGHT>
<DIALOGNAME>WW_PO_MA_MANHOLE</DIALOGNAME>
<REGISTERNAMES>Normschacht;Weitere;</REGISTERNAMES>
<STARTMODE>0</STARTMODE>
<TABGROUPSUSPEND>||</TABGROUPSUSPEND>
<TABLENAME>WW_PO_MA_MANHOLE</TABLENAME>
<TOOLBAR_ID>1</TOOLBAR_ID>
</TB_GN_DIALOG>
<TB_GN_CONTROL>
<ID>26851</ID>
<ALIGNRIGHT>1</ALIGNRIGHT>
<ALLOWREFERENCE>1</ALLOWREFERENCE>
<ASSEMBLYNAME>Autodesk.Map.IM.Forms.DLL</ASSEMBLYNAME>
<BASEVISIBILITY>0</BASEVISIBILITY>
<CAPTION>T2t_fid_contact_owner:</CAPTION>
<CLASSNAME>TextBox</CLASSNAME>
<CLASSNAMESPACE>Autodesk.Map.IM.Forms.DialogControls</CLASSNAMESPACE>
<COLUMNNAME>T2T_FID_CONTACT_OWNER</COLUMNNAME>
<COLWIDTH>200</COLWIDTH>
<DETAILFIELDISNUMERIC>1</DETAILFIELDISNUMERIC>
<DIALOG_ID>1175</DIALOG_ID>
<ENFORCEUPPER>0</ENFORCEUPPER>
<FILESELECTION>0</FILESELECTION>
<FILTERCOMBOBOX>0</FILTERCOMBOBOX>
<GRIDORDER>0</GRIDORDER>
<HEIGHT>22</HEIGHT>
<HIDEATGRID>0</HIDEATGRID>
<ISLOCKED>0</ISLOCKED>
<ISOBLIGATE>0</ISOBLIGATE>
<ISUNIQUE>0</ISUNIQUE>
<LEFT>160</LEFT>
<MULTILINE>0</MULTILINE>
<NAME>T2T_FID_CONTACT_OWNER</NAME>
<PRIORITY>100</PRIORITY>
<TABID>0</TABID>
<TOP>1401</TOP>
<WIDTH>200</WIDTH>
<WORDWRAP>0</WORDWRAP>
</TB_GN_CONTROL>
<TB_GN_CONTROL>
<ID>26852</ID>
<ALLOWDOUBLECLICK>1</ALLOWDOUBLECLICK>
<ALLOWREFERENCE>1</ALLOWREFERENCE>
<ASSEMBLYNAME>Autodesk.Map.IM.Forms.DLL</ASSEMBLYNAME>
<BASEVISIBILITY>0</BASEVISIBILITY>
<CAPTION>ID - Material Benutzerdefiniert:</CAPTION>
<CLASSNAME>ComboBox</CLASSNAME>
<CLASSNAMESPACE>Autodesk.Map.IM.Forms.DialogControls</CLASSNAMESPACE>
<COLUMNNAME>ID_MATERIAL_USER</COLUMNNAME>
<COLWIDTH>200</COLWIDTH>
<DETAILFIELDISNUMERIC>1</DETAILFIELDISNUMERIC>
<DETAILFIELDNAME>ID</DETAILFIELDNAME>
<DETAILFILTER>ACTIVE=1</DETAILFILTER>
<DETAILLIST>VALUE</DETAILLIST>
<DETAILORDERBY>VALUE</DETAILORDERBY>
<DETAILTABLE>WW_PO_MATERIAL_USER_TBD</DETAILTABLE>
<DIALOG_ID>1175</DIALOG_ID>
<FIDBUTTON>0</FIDBUTTON>
<GRIDORDER>0</GRIDORDER>
<HEIGHT>22</HEIGHT>
<HIDEATGRID>0</HIDEATGRID>
<HIGHLIGHTBUTTON>0</HIGHLIGHTBUTTON>
<ISLOCKED>0</ISLOCKED>
<ISOBLIGATE>0</ISOBLIGATE>
<ISUNIQUE>0</ISUNIQUE>
<LEFT>160</LEFT>
<NAME>ID_MATERIAL_USER</NAME>
<PRIORITY>100</PRIORITY>
<TABID>0</TABID>
<TOP>1428</TOP>
<USEBUFFER>1</USEBUFFER>
<WIDTH>200</WIDTH>
</TB_GN_CONTROL>
<TB_GN_CONTROL>
<ID>26853</ID>
<ALLOWREFERENCE>1</ALLOWREFERENCE>
<ASSEMBLYNAME>Autodesk.Map.IM.Forms.DLL</ASSEMBLYNAME>
<BASEVISIBILITY>0</BASEVISIBILITY>
<CAPTION>Ww_po_fi_fitting:</CAPTION>
<CLASSNAME>Reference</CLASSNAME>
<CLASSNAMESPACE>Autodesk.Map.IM.Forms.DialogControls</CLASSNAMESPACE>
<COLWIDTH>200</COLWIDTH>
<DETAILFIELDISNUMERIC>1</DETAILFIELDISNUMERIC>
<DETAILFIELDNAME>FID_FEATURE</DETAILFIELDNAME>
<DETAILTABLE>WW_PO_FI_FITTING</DETAILTABLE>
<DIALOG_ID>1175</DIALOG_ID>
<GRIDORDER>0</GRIDORDER>
<HEIGHT>22</HEIGHT>
<HIDEATGRID>0</HIDEATGRID>
<LEFT>160</LEFT>
<MASTERFIELDNAME>FID</MASTERFIELDNAME>
<NAME>$REF_WW_PO_FI_FITTING</NAME>
<PRIORITY>100</PRIORITY>
<PROJECTIONBUTTON>1</PROJECTIONBUTTON>
<REFERENCEBUTTON>1</REFERENCEBUTTON>
<TABID>0</TABID>
<TOP>1455</TOP>
<WIDTH>200</WIDTH>
</TB_GN_CONTROL>
<TB_GN_CONTROL>
<ID>26763</ID>
<ALLOWREFERENCE>1</ALLOWREFERENCE>
<ASSEMBLYNAME>Autodesk.Map.IM.Forms.DLL</ASSEMBLYNAME>
<BASEVISIBILITY>1</BASEVISIBILITY>
<CLASSNAME>ApiControl</CLASSNAME>
<CLASSNAMESPACE>Autodesk.Map.IM.Forms.DialogControls</CLASSNAMESPACE>
<COLWIDTH>70</COLWIDTH>
<CUSTOMPROPS>ControlProperties||</CUSTOMPROPS>
<DETAILFIELDISNUMERIC>1</DETAILFIELDISNUMERIC>
<DIALOG_ID>1175</DIALOG_ID>
<GRIDORDER>0</GRIDORDER>
<HEIGHT>22</HEIGHT>
<HIDEATGRID>0</HIDEATGRID>
<ISOBLIGATE>0</ISOBLIGATE>
<LEFT>570</LEFT>
<NAME>$STARTINGLINES</NAME>
<PLUGINASSEMBLYNAME>Autodesk.Map.IM.Forms.dll</PLUGINASSEMBLYNAME>
<PLUGINCLASSNAME>BUTTON</PLUGINCLASSNAME>
<PLUGINCLASSNAMESPACE>Autodesk.Map.IM.Forms</PLUGINCLASSNAMESPACE>
<PRIORITY>100</PRIORITY>
<TABID>2</TABID>
<TOP>313</TOP>
<WIDTH>200</WIDTH>
</TB_GN_CONTROL>
<TB_GN_CONTROL>
<ID>26764</ID>
<ALLOWREFERENCE>1</ALLOWREFERENCE>
<ASSEMBLYNAME>Autodesk.Map.IM.Forms.DLL</ASSEMBLYNAME>
<BASEVISIBILITY>1</BASEVISIBILITY>
<CLASSNAME>Line</CLASSNAME>
<CLASSNAMESPACE>Autodesk.Map.IM.Forms.DialogControls</CLASSNAMESPACE>
<COLWIDTH>200</COLWIDTH>
<DETAILFIELDISNUMERIC>1</DETAILFIELDISNUMERIC>
<DIALOG_ID>1175</DIALOG_ID>
<FORECOLOR>Gray</FORECOLOR>
<GRIDORDER>0</GRIDORDER>
<HEIGHT>22</HEIGHT>
<HIDEATGRID>0</HIDEATGRID>
<LEFT>80</LEFT>
<LINESIZE>1</LINESIZE>
<MULTILINE>0</MULTILINE>
<NAME>$LINEVERBUNDENE</NAME>
<PRIORITY>9</PRIORITY>
<TABID>1</TABID>
<TOP>733</TOP>
<VERTICAL>0</VERTICAL>
<WIDTH>690</WIDTH>
</TB_GN_CONTROL>
<TB_GN_CONTROL>
<ID>26765</ID>
<ALIGNRIGHT>0</ALIGNRIGHT>
<ALLOWREFERENCE>1</ALLOWREFERENCE>
<ASSEMBLYNAME>Autodesk.Map.IM.Forms.DLL</ASSEMBLYNAME>
<BASEVISIBILITY>1</BASEVISIBILITY>
<CLASSNAME>Label</CLASSNAME>
<CLASSNAMESPACE>Autodesk.Map.IM.Forms.DialogControls</CLASSNAMESPACE>
<COLWIDTH>40</COLWIDTH>
<DETAILFIELDISNUMERIC>1</DETAILFIELDISNUMERIC>
<DIALOG_ID>1175</DIALOG_ID>
<FONTNAME>Microsoft Sans Serif</FONTNAME>
<FONTSIZE>8</FONTSIZE>
<FONTSTYLE>0</FONTSTYLE>
<FORECOLOR>Black</FORECOLOR>
<GRIDORDER>0</GRIDORDER>
<HEIGHT>22</HEIGHT>
<HIDEATGRID>0</HIDEATGRID>
<LEFT>0</LEFT>
<NAME>$LABELVERBUNDENE</NAME>
<PRIORITY>100</PRIORITY>
<TABID>1</TABID>
<TEXT>Verbundene</TEXT>
<TOP>733</TOP>
<WIDTH>80</WIDTH>
</TB_GN_CONTROL>
<TB_GN_CONTROL>
<ID>26766</ID>
<ALIGNRIGHT>1</ALIGNRIGHT>
<ALLOWREFERENCE>1</ALLOWREFERENCE>
<ASSEMBLYNAME>Autodesk.Map.IM.Forms.DLL</ASSEMBLYNAME>
<BASEVISIBILITY>1</BASEVISIBILITY>
<CAPTION>Sohlenkote:</CAPTION>
<CLASSNAME>TextBox</CLASSNAME>
<CLASSNAMESPACE>Autodesk.Map.IM.Forms.DialogControls</CLASSNAMESPACE>
<COLUMNNAME>BOTTOM_ELEVATION</COLUMNNAME>
<COLWIDTH>84</COLWIDTH>
<DETAILFIELDISNUMERIC>1</DETAILFIELDISNUMERIC>
<DIALOG_ID>1175</DIALOG_ID>
<ENFORCEUPPER>0</ENFORCEUPPER>
<FILESELECTION>0</FILESELECTION>
<FILTERCOMBOBOX>0</FILTERCOMBOBOX>
<GRIDORDER>0</GRIDORDER>
<HEIGHT>22</HEIGHT>
<HIDEATGRID>0</HIDEATGRID>
<ISLOCKED>0</ISLOCKED>
<ISOBLIGATE>0</ISOBLIGATE>
<ISUNIQUE>0</ISUNIQUE>
<LEFT>170</LEFT>
<MULTILINE>0</MULTILINE>
<NAME>BOTTOM_ELEVATION</NAME>
<NEXTCONTROL>ID_MATERIAL</NEXTCONTROL>
<PRECISION>3</PRECISION>
<PRIORITY>100</PRIORITY>
<TABID>1</TABID>
<TOOLTIPTEXT>Meter. Leer, wenn unbekannt.</TOOLTIPTEXT>
<TOP>453</TOP>
<WIDTH>60</WIDTH>
<WORDWRAP>0</WORDWRAP>
</TB_GN_CONTROL>
<TB_GN_CONTROL>
<ID>26767</ID>
<ALIGNRIGHT>0</ALIGNRIGHT>
<ALLOWREFERENCE>1</ALLOWREFERENCE>
<ASSEMBLYNAME>Autodesk.Map.IM.Forms.DLL</ASSEMBLYNAME>
<BASEVISIBILITY>1</BASEVISIBILITY>
<CAPTION>Erstellungsdatum: (*)</CAPTION>
<CLASSNAME>TextBox</CLASSNAME>
<CLASSNAMESPACE>Autodesk.Map.IM.Forms.DialogControls</CLASSNAMESPACE>
<COLUMNNAME>DATE_CREATION</COLUMNNAME>
<COLWIDTH>129</COLWIDTH>
<DATEFORMAT>d</DATEFORMAT>
<DETAILFIELDISNUMERIC>1</DETAILFIELDISNUMERIC>
<DIALOG_ID>1175</DIALOG_ID>
<ENFORCEUPPER>0</ENFORCEUPPER>
<FILESELECTION>0</FILESELECTION>
<FILTERCOMBOBOX>0</FILTERCOMBOBOX>
<GRIDORDER>0</GRIDORDER>
<HEIGHT>22</HEIGHT>
<HIDEATGRID>0</HIDEATGRID>
<ISLOCKED>0</ISLOCKED>
<ISOBLIGATE>0</ISOBLIGATE>
<ISUNIQUE>0</ISUNIQUE>
<LEFT>570</LEFT>
<MULTILINE>0</MULTILINE>
<NAME>DATE_CREATION</NAME>
<NEXTCONTROL>DATE_MODIFICATION</NEXTCONTROL>
<PRIORITY>100</PRIORITY>
<TABID>1</TABID>
<TOP>173</TOP>
<WIDTH>200</WIDTH>
<WORDWRAP>0</WORDWRAP>
</TB_GN_CONTROL>
<TB_GN_CONTROL>
<ID>26768</ID>
<ALLOWREFERENCE>1</ALLOWREFERENCE>
<ASSEMBLYNAME>Autodesk.Map.IM.Forms.DLL</ASSEMBLYNAME>
<BASEVISIBILITY>0</BASEVISIBILITY>
<CAPTION>Förderggregat:</CAPTION>
<CLASSNAME>Reference</CLASSNAME>
<CLASSNAMESPACE>Autodesk.Map.IM.Forms.DialogControls</CLASSNAMESPACE>
<COLWIDTH>200</COLWIDTH>
<DETAILFIELDISNUMERIC>1</DETAILFIELDISNUMERIC>
<DETAILFIELDNAME>FID_FEATURE_TO</DETAILFIELDNAME>
<DETAILTABLE>WW_PO_OU_CONVEYING</DETAILTABLE>
<DIALOG_ID>1175</DIALOG_ID>
<GRIDORDER>0</GRIDORDER>
<HEIGHT>22</HEIGHT>
<HIDEATGRID>0</HIDEATGRID>
<LEFT>180</LEFT>
<MASTERFIELDNAME>FID</MASTERFIELDNAME>
<NAME>$REF_WW_PO_OU_CONVEYING</NAME>
<PRIORITY>100</PRIORITY>
<PROJECTIONBUTTON>1</PROJECTIONBUTTON>
<REFERENCEBUTTON>1</REFERENCEBUTTON>
<TABID>2</TABID>
<TOP>313</TOP>
<WIDTH>200</WIDTH>
</TB_GN_CONTROL>
<TB_GN_DIALOG_BAR>
<ID>1</ID>
<NAME>Objekt</NAME>
</TB_GN_DIALOG_BAR>
<TB_GN_DIALOG_BAR_FILTER>
<ID>a208ad72-bb0e-410e-8ab1-672a8bf2bb50</ID>
<BAR_ID>1</BAR_ID>
<NAME>Autodesk.Map.IM.Map.MapDialog/TBDigitizeChildren</NAME>
<USERGROUP_ID>a0194cac-0b6c-4ed9-a631-aa125c7c950e</USERGROUP_ID>
</TB_GN_DIALOG_BAR_FILTER>
<TB_GN_DIALOG_BAR_FILTER>
<ID>bf8b2c9c-36bf-48df-9edf-e22dc06d41f0</ID>
<BAR_ID>1</BAR_ID>
<NAME>Autodesk.Map.IM.Map.MapDialog/TBDigitizeHole</NAME>
<USERGROUP_ID>a0194cac-0b6c-4ed9-a631-aa125c7c950e</USERGROUP_ID>
</TB_GN_DIALOG_BAR_FILTER>
<TB_GN_DIALOG_BAR_FILTER>
<ID>fef9076a-ad2f-4ed4-ac43-2681e8273390</ID>
<BAR_ID>1</BAR_ID>
<NAME>Autodesk.Map.IM.Map.MapDialog/TBDigitize</NAME>
<USERGROUP_ID>a0194cac-0b6c-4ed9-a631-aa125c7c950e</USERGROUP_ID>
</TB_GN_DIALOG_BAR_FILTER>
<TB_GN_DIALOG_BAR_FILTER>
<ID>ac567c26-aea2-43c2-9f2e-b83f5b047d62</ID>
<BAR_ID>1</BAR_ID>
<NAME>Autodesk.Map.IM.Forms.Basis.BasisDialog/tbb_Delete</NAME>
<USERGROUP_ID>a0194cac-0b6c-4ed9-a631-aa125c7c950e</USERGROUP_ID>
</TB_GN_DIALOG_BAR_FILTER>
<TB_GN_DIALOG_PROJECTION>
<ID>38</ID>
<DIALOG_ID>1175</DIALOG_ID>
<PROJECTION_DIALOG_NAME>WW_DISPOSITION_STATE_TBD</PROJECTION_DIALOG_NAME>
<PROJECTION_FILTER>ID in (select ID_STATE from WW_PO_MA_MANHOLE where {Filter})</PROJECTION_FILTER>
<PROJECTION_NAME>Status</PROJECTION_NAME>
</TB_GN_DIALOG_PROJECTION>
<TB_GN_DIALOG_PROJECTION>
<ID>39</ID>
<DIALOG_ID>1175</DIALOG_ID>
<PROJECTION_DIALOG_NAME>WW_PO_MA_FUNCTION_TBD</PROJECTION_DIALOG_NAME>
<PROJECTION_FILTER>ID in (select ID_FUNCTION from WW_PO_MA_MANHOLE where {Filter})</PROJECTION_FILTER>
<PROJECTION_NAME>Funktion</PROJECTION_NAME>
</TB_GN_DIALOG_PROJECTION>
<TB_GN_DIALOG_PROJECTION>
<ID>40</ID>
<DIALOG_ID>1175</DIALOG_ID>
<PROJECTION_DIALOG_NAME>WW_UTILISATION_TBD</PROJECTION_DIALOG_NAME>
<PROJECTION_FILTER>ID in (select ID_UTILISATION from WW_PO_MA_MANHOLE where {Filter})</PROJECTION_FILTER>
<PROJECTION_NAME>Nutzung / Wassserart</PROJECTION_NAME>
</TB_GN_DIALOG_PROJECTION>
<TB_GN_DIALOG_PROJECTION>
<ID>41</ID>
<DIALOG_ID>1175</DIALOG_ID>
<PROJECTION_DIALOG_NAME>WW_PO_FI_FITTING</PROJECTION_DIALOG_NAME>
<PROJECTION_FILTER>FID_FEATURE in (select FID from WW_PO_MA_MANHOLE)</PROJECTION_FILTER>
<PROJECTION_NAME>Haltungsverbindung</PROJECTION_NAME>
</TB_GN_DIALOG_PROJECTION>
<TB_GN_REPORT>
<ID>112</ID>
<DESKTOP>1</DESKTOP>
<DIALOG_ID>1175</DIALOG_ID>
<FILENAME>Liste Normschacht</FILENAME>
<NAME>Liste Normschacht</NAME>
<PROPS>Format=DEFAULT</PROPS>
<REPORTTYPE>Topobase Report</REPORTTYPE>
<WEB>0</WEB>
</TB_GN_REPORT>
<TB_GN_REPORT>
<ID>110</ID>
<DESKTOP>1</DESKTOP>
<DIALOG_ID>1175</DIALOG_ID>
<NAME>Default</NAME>
<REPORTTYPE>Default</REPORTTYPE>
<WEB>0</WEB>
</TB_GN_REPORT>
<TB_GN_REPORT>
<ID>111</ID>
<DESKTOP>1</DESKTOP>
<DIALOG_ID>1175</DIALOG_ID>
<FILENAME>Bericht Normschacht</FILENAME>
<NAME>Bericht Normschacht</NAME>
<PROPS>Format=DEFAULT</PROPS>
<REPORTTYPE>Topobase Report</REPORTTYPE>
<WEB>0</WEB>
</TB_GN_REPORT>
<TB_USERGROUP>
<ID>5ddd0fea-8554-4665-9f5b-6fa2da3b0b12</ID>
<NAME>LEHRLING</NAME>
</TB_USERGROUP>
<TB_USERGROUP>
<ID>b19d9a62-25f5-4a1a-a8a3-79b267808830</ID>
<NAME>ADMIN</NAME>
</TB_USERGROUP>
<TB_USERGROUP>
<ID>5dffd865-1a86-4e06-a716-e646d48a973e</ID>
<NAME>GR_BENUTZER</NAME>
</TB_USERGROUP>
<TB_USERGROUP>
<ID>a0194cac-0b6c-4ed9-a631-aa125c7c950e</ID>
<NAME>GR_BETRACHTER</NAME>
</TB_USERGROUP>
</Topobase>```
答案 0 :(得分:1)
使用更详细的示例来理解您的要求会更容易,但是我认为这可以满足您的要求:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
version="2.0">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="Topobase">
<xsl:element name="Topobase">
<xsl:for-each-group select="*" group-by="name()">
<xsl:sort select="name()"/>
<xsl:for-each select="current-group()">
<xsl:sort select="ID" data-type="number"/>
<xsl:copy-of select="current()"/>
</xsl:for-each>
</xsl:for-each-group>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
您也可以在这里看到它的工作方式:https://xsltfiddle.liberty-development.net/94AbWBh