【问题标题】:xml to xml (shorter version) with XSL使用 XSL 将 xml 转换为 xml(较短的版本)
【发布时间】:2012-11-24 01:30:49
【问题描述】:

ORIGINAL - 这是我的原始 XML:

<course acad_year="2012" cat_num="85749" offered="N" next_year_offered="2013">
  <term term_pattern_code="4" fall_term="Y" spring_term="Y">full year</term>
  <department code="VES">
    <dept_long_name>Department of Visual and Environmental Studies</dept_long_name>
    <dept_short_name>Visual and Environmental Studies</dept_short_name>
  </department>
</course>

期望的结果 - 我正在尝试创建原始 XML 的另一个较短版本,它将分组并列出所有部门代码,如下例所示:

   <departments>
      <department code="some_code" name="some_name"/>
      <department code="some_code" name="some_name"/>
      <department code="some_code" name="some_name"/>
   </departments>

这是我正在尝试但不工作的:

   <xsl:template match="/">
       <departments>
          <xsl:for-each-group select="fas_courses/course" group-by="department[@code]">
            <xsl:text disable-output-escaping="yes"> <department code=" </xsl:text>
            <xsl:value-of select="department/@code"/>
            <xsl:text>" name="</xsl:text>
            <xsl:value-of select="dept_short_name"/>
            <xsl:text disable-output-escaping="yes">"><department/></xsl:text>
         </xsl:for-each-group> 
       </departments>
   </xsl:template>

我遇到的错误 F [Saxon-PE 9.4.0.3] 与元素类型“部门”关联的属性“代码”的值不得包含“

从错误消息中,我了解到 '

【问题讨论】:

  • 在提供的 XML 文档中没有名为fas_courses 的元素——显然它不需要任何分组。请编辑问题并提供一个具有代表性的 XML 文档以及该文档所需的确切结果。一定要学会发布完整且无误导性的问题。 -1
  • 弗林的答案是正确的,但是如果将来由于某种原因您确实需要插入一个“&lt;

标签: xslt xslt-2.0


【解决方案1】:

使用 disable-output-escaping 从来都不是一个好主意,在这里你真的不需要它。试试这个:

<xsl:template match="/">
  <departments>
    <xsl:for-each-group select="fas_courses/course" group-by="department/@code">
      <department code="{department/@code}" name="{department/dept_short_name}" />
    </xsl:for-each-group> 
  </departments>
</xsl:template>

【讨论】:

    【解决方案2】:

    您需要在 中写入文本,这样它就不会被解析或使用 作为您输出的标签。

    【讨论】:

      猜你喜欢
      • 2012-02-01
      • 1970-01-01
      • 2019-03-22
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      • 2014-07-30
      • 2016-02-13
      • 1970-01-01
      相关资源
      最近更新 更多