用XSLT进行字母排序
示例XML:用XSLT进行字母排序,xslt,sorting,Xslt,Sorting,示例XML: <term> <name>facies</name> <translation language="en">facies</translation> <definition><num>1.</num> cara <num>2.</num> superficie externa, superficie anterior</definitio
<term>
<name>facies</name>
<translation language="en">facies</translation>
<definition><num>1.</num> cara <num>2.</num> superficie externa, superficie anterior</definition>
</term>
<term>
<name>factores angiógenos</name>
<translation language="en">angiogenic factors</translation>
<definition>descripción de sustancias que favorecen el desarrollo o la formación nueva de vasos sanguíneos</definition>
</term>
<term>
<name>factores de la coagulación</name>
<translation language="en">coagulation factors</translation>
<definition>la cascada de la coagulación de la sangre consta de 12 factores en total, todos ellos necesarios para que funcione bien</definition>
</term>
<terms>
<letter name="f">
<term>
<name>facies</name>
<translation language="en">facies</translation>
<definition>
<num>1.</num> cara <num>2.</num> superficie externa, superficie anterior
</definition>
</term>
<term>
<name>factores angiógenos</name>
<translation language="en">angiogenic factors</translation>
<definition>descripción de sustancias que favorecen el desarrollo o la formación nueva de vasos sanguíneos</definition>
</term>
<term>
<name>factores de la coagulación</name>
<translation language="en">coagulation factors</translation>
<definition>la cascada de la coagulación de la sangre consta de 12 factores en total, todos ellos necesarios para que funcione bien</definition>
</term>
</letter>
但是,正如您所看到的,由于添加了英语单词,数组中的第一部分不再按字母顺序排列
它需要按字母顺序排列,因此在这种情况下,“血管生成因子”将是数组中的第一个元素
有什么想法吗?定义和用法
Definition and Usage
The <xsl:sort> element is used to sort the output.
Note: <xsl:sort> is always within <xsl:for-each> or <xsl:apply-templates>.
元素用于对输出进行排序。
注意:始终在或内。
定义和用法
元素用于对输出进行排序。
注意:始终在或内。
是的,需要更多的思考来排序:p
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes"/>
<xsl:template match="terms">
var allwords = [
<xsl:for-each select="letter/term/name | letter/term/translation">
<xsl:sort order="ascending" select="."/>
<xsl:call-template name="term"></xsl:call-template>
</xsl:for-each>
['','']
];
</xsl:template>
<xsl:template name="term">
['<xsl:value-of select="."/>', '<xsl:value-of select="./../name"/>'],
</xsl:template>
</xsl:stylesheet>
var-allwords=[
['','']
];
['', ''],
基本上,您需要能够同时选择名称和翻译,然后根据它们进行排序。然后必须对模板进行一些编辑,因为它现在接收的是子元素而不是父元素。是的,需要多考虑一下排序:p
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes"/>
<xsl:template match="terms">
var allwords = [
<xsl:for-each select="letter/term/name | letter/term/translation">
<xsl:sort order="ascending" select="."/>
<xsl:call-template name="term"></xsl:call-template>
</xsl:for-each>
['','']
];
</xsl:template>
<xsl:template name="term">
['<xsl:value-of select="."/>', '<xsl:value-of select="./../name"/>'],
</xsl:template>
</xsl:stylesheet>
var-allwords=[
['','']
];
['', ''],
基本上,您需要能够同时选择名称和翻译,然后根据它们进行排序。然后必须对模板进行一些编辑,因为它现在接收的是子元素而不是父元素。下面是我对您尝试执行的操作的最佳猜测。给定以下示例XML:
<term>
<name>facies</name>
<translation language="en">facies</translation>
<definition><num>1.</num> cara <num>2.</num> superficie externa, superficie anterior</definition>
</term>
<term>
<name>factores angiógenos</name>
<translation language="en">angiogenic factors</translation>
<definition>descripción de sustancias que favorecen el desarrollo o la formación nueva de vasos sanguíneos</definition>
</term>
<term>
<name>factores de la coagulación</name>
<translation language="en">coagulation factors</translation>
<definition>la cascada de la coagulación de la sangre consta de 12 factores en total, todos ellos necesarios para que funcione bien</definition>
</term>
<terms>
<letter name="f">
<term>
<name>facies</name>
<translation language="en">facies</translation>
<definition>
<num>1.</num> cara <num>2.</num> superficie externa, superficie anterior
</definition>
</term>
<term>
<name>factores angiógenos</name>
<translation language="en">angiogenic factors</translation>
<definition>descripción de sustancias que favorecen el desarrollo o la formación nueva de vasos sanguíneos</definition>
</term>
<term>
<name>factores de la coagulación</name>
<translation language="en">coagulation factors</translation>
<definition>la cascada de la coagulación de la sangre consta de 12 factores en total, todos ellos necesarios para que funcione bien</definition>
</term>
</letter>
相
相
1.卡拉2。外表面,前表面
安杰诺斯因素
血管生成因子
请描述我们对桑古尼奥斯新形式的支持
凝血因子
凝血因子
总的来说,12个因素的共同作用是,在功能方面的必要性
根据每个字母的翻译进行排序:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes"/>
<xsl:template match="terms">
var allwords = [
<xsl:apply-templates select="letter">
<xsl:sort select="name"/>
</xsl:apply-templates>
];
</xsl:template>
<xsl:template match="letter">
<xsl:apply-templates select="term">
<xsl:sort select="translation"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="term">
['<xsl:value-of select="translation"/>', '<xsl:value-of select="name"/>']
<xsl:if test="not(position() = last())">
<xsl:text>, </xsl:text>
</xsl:if>
</xsl:template>
var-allwords=[
];
['', '']
,
以下是我对您的最佳猜测。给定以下示例XML:
<term>
<name>facies</name>
<translation language="en">facies</translation>
<definition><num>1.</num> cara <num>2.</num> superficie externa, superficie anterior</definition>
</term>
<term>
<name>factores angiógenos</name>
<translation language="en">angiogenic factors</translation>
<definition>descripción de sustancias que favorecen el desarrollo o la formación nueva de vasos sanguíneos</definition>
</term>
<term>
<name>factores de la coagulación</name>
<translation language="en">coagulation factors</translation>
<definition>la cascada de la coagulación de la sangre consta de 12 factores en total, todos ellos necesarios para que funcione bien</definition>
</term>
<terms>
<letter name="f">
<term>
<name>facies</name>
<translation language="en">facies</translation>
<definition>
<num>1.</num> cara <num>2.</num> superficie externa, superficie anterior
</definition>
</term>
<term>
<name>factores angiógenos</name>
<translation language="en">angiogenic factors</translation>
<definition>descripción de sustancias que favorecen el desarrollo o la formación nueva de vasos sanguíneos</definition>
</term>
<term>
<name>factores de la coagulación</name>
<translation language="en">coagulation factors</translation>
<definition>la cascada de la coagulación de la sangre consta de 12 factores en total, todos ellos necesarios para que funcione bien</definition>
</term>
</letter>
相
相
1.卡拉2。外表面,前表面
安杰诺斯因素
血管生成因子
请描述我们对桑古尼奥斯新形式的支持
凝血因子
凝血因子
总的来说,12个因素的共同作用是,在功能方面的必要性
根据每个字母的翻译进行排序:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes"/>
<xsl:template match="terms">
var allwords = [
<xsl:apply-templates select="letter">
<xsl:sort select="name"/>
</xsl:apply-templates>
];
</xsl:template>
<xsl:template match="letter">
<xsl:apply-templates select="term">
<xsl:sort select="translation"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="term">
['<xsl:value-of select="translation"/>', '<xsl:value-of select="name"/>']
<xsl:if test="not(position() = last())">
<xsl:text>, </xsl:text>
</xsl:if>
</xsl:template>
var-allwords=[
];
['', '']
,
我想就是这么简单:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output encoding="windows-1252" omit-xml-declaration="yes"/>
<xsl:template match="/*">
var allwords = [
<xsl:apply-templates select="term">
<!-- key to success -->
<xsl:sort select="name"/>
</xsl:apply-templates>
];
</xsl:template>
<xsl:template match="term">
['<xsl:value-of select="name" />',
'<xsl:value-of select="translation[@language='en']" />']
<xsl:if test="position() != last()">,</xsl:if>
</xsl:template>
</xsl:stylesheet>
(换行符和缩进在原始输出中有点不同。我对它们进行了更改,使其看起来更美观。)
我认为您不知道XSL样式表中标有
的
。-) 我认为就这么简单:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output encoding="windows-1252" omit-xml-declaration="yes"/>
<xsl:template match="/*">
var allwords = [
<xsl:apply-templates select="term">
<!-- key to success -->
<xsl:sort select="name"/>
</xsl:apply-templates>
];
</xsl:template>
<xsl:template match="term">
['<xsl:value-of select="name" />',
'<xsl:value-of select="translation[@language='en']" />']
<xsl:if test="position() != last()">,</xsl:if>
</xsl:template>
</xsl:stylesheet>
(换行符和缩进在原始输出中有点不同。我对它们进行了更改,使其看起来更美观。)
我认为您不知道XSL样式表中标有
的
。-) 这两个模板都与您的模式不匹配。另外,“for each”不是您尝试执行的操作的适当元素——“apply templates”是相关的构造。这两个模板都与您的模式不匹配。此外,“for each”并不是您尝试执行的操作的适当元素--“apply templates”是相关的构造。