Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用XSLT进行字母排序_Xslt_Sorting - Fatal编程技术网

用XSLT进行字母排序

用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

示例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>
但是,正如您所看到的,由于添加了英语单词,数组中的第一部分不再按字母顺序排列

它需要按字母顺序排列,因此在这种情况下,“血管生成因子”将是数组中的第一个元素

有什么想法吗?

定义和用法
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”是相关的构造。