草庐IT

xml - 大学类(class)的 XML 编码

coder 2024-07-01 原文

我已经搜索了互联网/并在此处发帖,试图找到我所遇到问题的答案。我正在学习 XML 并且有一项作业,我必须将以前的 .xml 转换为 .xslt。我已经得到了所有这些,但有一小部分代码无法找到我输入的值。 例如;我知道可能有很多其他方法可以实现这一点,但这是我得到的代码。

部分.xml如下:

     <collection>
     <movie>
     <title>Braveheart</title>
     <genre v_genre="Action"/>
     <rating v_rating="R"/>
     <grading v_grading="4"/>
        <summary>William Wallace, a commoner, unites the 13th Century Scots in their battle to overthrow Englands rule </summary>
    <year>1995</year>
    <director>Mel Gibson</director>
    <runtime>177</runtime>
    <studio>Icon Entertainment International</studio>
    <actors>
        <actor ID="001">Mel Gibson</actor>
        <actor ID="002">Sophie Marceau</actor>
        <actor ID="003">Patrick McGoohan</actor>
    </actors>
</movie>

现在我不明白这个值(value)。 如果有人可以帮助我理解那部分,我将不胜感激。问题的第 2 部分将转到 .xslt 文档,所有内容均正确填充,但以下部分除外:流派、评级和分级。我尝试了多种不同的方法来尝试获取要填充的值。这是代码的一部分。

<xslt:for-each select="collection/movie">

 <tr>

 <td>

 <xslt:value-of select="title"/>

 </td>

 <td>

  <xslt:value-of select="genre"/>

 </td>

 <td>

<xslt:value-of select="rating/v_rating"/>

</td>

<td>

 <xslt:value-of select="grading/v_grading"/>

 </td>
 <td>
 <xslt:value-of select="summary"/>
 </td>               
 <td>
  <xslt:value-of select="year"/>
  </td>
   <td>
  <xslt:value-of select="director"/>
  </td>
  <td>
  <xslt:value-of select="runtime"/>
   </td>
   <td>
    <xslt:value-of select="studio"/>
   </td>
   <td>
  <xslt:value-of select="actors"/>
  </td>
  </tr>

 </xslt:for-each>

  </table>

 </body>

  </html>

  </xslt:template>
  </xslt:stylesheet>

我正在努力真正理解为什么将来使用这种方式。整个大学的事情。希望这不会被删除。我已经搜索了很多地方来解决这个问题,但没有示例以这种方式列出。先谢谢你。

最佳答案

你遇到问题的是这些

 <genre v_genre="Action"/>
 <rating v_rating="R"/>
 <grading v_grading="4"/>

因此,如果您注意到,您想要的值保存在属性中,而不是子文本节点中。因此,您需要将 xsl:value-of 更改为此(在 genre

的示例中
<xsl:value-of select="genre/@v_genre"/>

如果您热衷于学习 XSLT,可能值得了解使用 xsl:apply-templates 而不是 xsl:for-each。此外,您应该注意删除代码中的重复。查看您的示例,表格单元格的输出顺序与 XML 中的子元素相同。因此,您可以创建一个通用模板来匹配大多数子元素以输出表格单元格。

试试这个 XSLT

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:output method="xml" indent="yes"/>
   <xsl:template match="/collection">
      <table>
         <xsl:apply-templates select="movie"/>
      </table>
   </xsl:template>

   <xsl:template match="movie">
      <tr>
         <xsl:apply-templates/>
      </tr>
   </xsl:template>

   <xsl:template match="genre">
      <td>
         <xsl:value-of select="@v_genre"/>
      </td>
   </xsl:template>

   <xsl:template match="rating">
      <td>
         <xsl:value-of select="@v_rating"/>
      </td>
   </xsl:template>

   <xsl:template match="grading">
      <td>
         <xsl:value-of select="@v_grading"/>
      </td>
   </xsl:template>

   <xsl:template match="*">
      <td>
         <xsl:value-of select="."/>
      </td>
   </xsl:template>
</xsl:stylesheet>

请注意,XSLT 处理器将匹配更具体的命名元素(例如 genre),然后再匹配末尾 * 的通用模板。

关于xml - 大学类(class)的 XML 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13569058/

有关xml - 大学类(class)的 XML 编码的更多相关文章

  1. ruby - 什么是填充的 Base64 编码字符串以及如何在 ruby​​ 中生成它们? - 2

    我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%

  2. ruby - 用逗号、双引号和编码解析 csv - 2

    我正在使用ruby​​1.9解析以下带有MacRoman字符的csv文件#encoding:ISO-8859-1#csv_parse.csvName,main-dialogue"Marceu","Giveittohimóhe,hiswife."我做了以下解析。require'csv'input_string=File.read("../csv_parse.rb").force_encoding("ISO-8859-1").encode("UTF-8")#=>"Name,main-dialogue\r\n\"Marceu\",\"Giveittohim\x97he,hiswife.\"\

  3. ruby-on-rails - 如何从 format.xml 中删除 <hash></hash> - 2

    我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为

  4. C# 到 Ruby sha1 base64 编码 - 2

    我正在尝试在Ruby中复制Convert.ToBase64String()行为。这是我的C#代码:varsha1=newSHA1CryptoServiceProvider();varpasswordBytes=Encoding.UTF8.GetBytes("password");varpasswordHash=sha1.ComputeHash(passwordBytes);returnConvert.ToBase64String(passwordHash);//returns"W6ph5Mm5Pz8GgiULbPgzG37mj9g="当我在Ruby中尝试同样的事情时,我得到了相同sha

  5. ruby-on-rails - 有没有一种工具可以在编码时自动保存对文件的增量更改? - 2

    我最喜欢的Google文档功能之一是它会在我工作时不断自动保存我的文档版本。这意味着即使我在进行关键更改之前忘记在某个点进行保存,也很有可能会自动创建一个保存点。至少,我可以将文档恢复到错误更改之前的状态,并从该点继续工作。对于在MacOS(或UNIX)上运行的Ruby编码器,是否有具有等效功能的工具?例如,一个工具会每隔几分钟自动将Gitcheckin我的本地存储库以获取我正在处理的文件。也许我有点偏执,但这点小保险可以让我在日常工作中安心。 最佳答案 虚拟机有些人可能讨厌我对此的回应,但我在编码时经常使用VIM,它具有自动保存功

  6. Ruby - 如何处理子类意外覆盖父类(super class)私有(private)字段的问题? - 2

    假设您编写了一个类Sup,我决定将其扩展为SubSup。我不仅需要了解你发布的接口(interface),还需要了解你的私有(private)字段。见证这次失败:classSupdefinitialize@privateField="fromsup"enddefgetXreturn@privateFieldendendclassSub问题是,解决这个问题的正确方法是什么?看起来子类应该能够使用它想要的任何字段而不会弄乱父类(superclass)。编辑:equivalentexampleinJava返回"fromSup",这也是它应该产生的答案。 最佳答案

  7. ruby - 无法理解 `puts{}.class` 和 `puts({}.class)` 之间的区别 - 2

    由于匿名block和散列block看起来大致相同。我正在玩它。我做了一些严肃的观察,如下所示:{}.class#=>Hash好的,这很酷。空block被视为Hash。print{}.class#=>NilClassputs{}.class#=>NilClass为什么上面的代码和NilClass一样,下面的代码又显示了Hash?puts({}.class)#Hash#=>nilprint({}.class)#Hash=>nil谁能帮我理解上面发生了什么?我完全不同意@Lindydancer的观点你如何解释下面几行:print{}.class#NilClassprint[].class#A

  8. c - Ruby - 源代码 - 编码风格 - 2

    查看Ruby代码,它具有以下proc_arity:staticVALUEproc_arity(VALUEself){intarity=rb_proc_arity(self);returnINT2FIX(arity);}更多的是C编码风格问题,但为什么staticVALUE在单独的一行而不是像这样的:staticVALUEproc_arity(VALUEself) 最佳答案 它来自UNIX世界,因为它有助于轻松grep函数的定义:$grep-n'^proc_arity'*.c或使用vim:/^proc_arity

  9. ruby - 如何以编程方式删除实例上的 "singleton information"以使其编码(marshal)? - 2

    我创建了一个由于“在运行时执行的单例元类定义”而无法编码的对象(这段代码的描述是否正确?)。这是通过以下代码执行的:#defineclassXthatmyusesingletonclassmetaprogrammingfeatures#throughcallofmethod:break_marshalling!classXdefbreak_marshalling!meta_class=class我该怎么做才能使对象编码正确?是否可以从对象instance_of_x的classX中“移除”单例组件?我真的需要一个建议,因为我们的一些对象需要通过Marshal.dump序列化机制进行缓存。

  10. ruby - 使用 Class.new 时访问外部范围 - 2

    是否有可能以某种方式访问​​Class.new范围内的a?a=5Class.new{defb;aend}.new.b#NameError:undefinedlocalvariableormethod`a'for#:0x007fa8b15e9af0>#:in`b' 最佳答案 即使@MarekLipka的回答是正确的——改变变量范围总是有风险的。这是可行的,因为每个block都带有创建它的上下文,因此您的局部变量a突然变得不那么局部了——它变成了一个“隐藏的”全局变量:a=5object=Class.new{define_method(

随机推荐