我有以下 XML:
<record>
<d989 p="Apples" t="Apples"/>
<d990 p="Oranges" t="Bananas"/>
<record_group_1>
<d991 p="Mouse" t="Mouse and Cat"/>
<d991 p="Dog" t="Dog and Cat"/>
</record_group_1>
<record_group_2>
<d992 />
</record_group_2>
...
我在确定节点是否有子节点后使用以下 XSL 模板:
<xsl:template name="hasChildren">
<tr>
<td colspan="2" class="sectionTitle">
<xsl:value-of select="translate(local-name(), '_', ' ')" />
</td>
</tr>
...
我将如何包装 <xsl:template name="hasChildren"> contents 来确定所讨论的节点是否有子节点,任何子节点都具有 p 的属性。
我正在测试当前节点是否具有 p 属性 <xsl:if test="@p">但我不确定如何找到节点的子节点是否有 p。
对于上面的 XML 示例,我想忽略 <record_group_2>因为它的 child 不包含 p 的属性,其中 <record_group_1>我想处理。
如果您需要更多说明,请告诉我...
最佳答案
and I'm using the following XSL template after determining if the node has children:
<xsl:template name="hasChildren">
<tr>
<td colspan="2" class="sectionTitle">
<xsl:value-of select="translate(local-name(), '_', ' ')" />
</td>
</tr> ...
</xsl:template>
这段代码根本没有按照它所说的去做!
I'm testing if the current node has an attribute of `p` with `<xsl:if test="@p">` but I'm not sure how I could find if the node's children has a `p`.
使用:
*[@p]
此 XPath 表达式选择具有属性 p 的任何子元素(当前节点的) .在 test 中使用时<xsl:if> 的属性或 <xsl:when>选择的节点集被转换为 bool 值:true()如果节点集非空且 false()否则。
For the XML example above I would want to ignore
<record_group_2>because it's children do not contain the attribute of p where as<record_group_1>I would want to process
使用:就是上面的表达式。
这是一个完整且非常简单且简短的转换,它仅将顶部元素的子元素复制到输出,这些子元素具有 p。属性:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/*">
<xsl:copy>
<xsl:copy-of select="*[*/@p]"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
当此转换应用于提供的 XML 文档时(更正为格式正确):
<record>
<d989 p="Apples" t="Apples"/>
<d990 p="Oranges" t="Bananas"/>
<record_group_1>
<d991 p="Mouse" t="Mouse and Cat"/>
<d991 p="Dog" t="Dog and Cat"/>
</record_group_1>
<record_group_2>
<d992 />
</record_group_2>
</record>
想要的、正确的结果(没有至少一个子元素具有 p 属性的非顶级元素被删除)产生:
<record>
<record_group_1>
<d991 p="Mouse" t="Mouse and Cat"/>
<d991 p="Dog" t="Dog and Cat"/>
</record_group_1>
</record>
关于xml - XSL 检查以查看是否有任何子节点具有属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9039834/
给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru
我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..
我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚
我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为
为了将Cucumber用于命令行脚本,我按照提供的说明安装了arubagem。它在我的Gemfile中,我可以验证是否安装了正确的版本并且我已经包含了require'aruba/cucumber'在'features/env.rb'中为了确保它能正常工作,我写了以下场景:@announceScenario:Testingcucumber/arubaGivenablankslateThentheoutputfrom"ls-la"shouldcontain"drw"假设事情应该失败。它确实失败了,但失败的原因是错误的:@announceScenario:Testingcucumber/ar
这个问题在这里已经有了答案:Checktoseeifanarrayisalreadysorted?(8个答案)关闭9年前。我只是想知道是否有办法检查数组是否在增加?这是我的解决方案,但我正在寻找更漂亮的方法:n=-1@arr.flatten.each{|e|returnfalseife
我不确定传递给方法的对象的类型是否正确。我可能会将一个字符串传递给一个只能处理整数的函数。某种运行时保证怎么样?我看不到比以下更好的选择:defsomeFixNumMangler(input)raise"wrongtype:integerrequired"unlessinput.class==FixNumother_stuffend有更好的选择吗? 最佳答案 使用Kernel#Integer在使用之前转换输入的方法。当无法以任何合理的方式将输入转换为整数时,它将引发ArgumentError。defmy_method(number)
我试图在索引页中创建一个超链接,但它没有显示,也没有给出任何错误。这是我的index.html.erb代码。ListingarticlesTitleTextssss我检查了我的路线,我认为它们也没有问题。PrefixVerbURIPatternController#Actionwelcome_indexGET/welcome/index(.:format)welcome#indexarticlesGET/articles(.:format)articles#indexPOST/articles(.:format)articles#createnew_articleGET/article
我有一个包含多个键的散列和一个字符串,该字符串不包含散列中的任何键或包含一个键。h={"k1"=>"v1","k2"=>"v2","k3"=>"v3"}s="thisisanexamplestringthatmightoccurwithakeysomewhereinthestringk1(withspecialcharacterslike(^&*$#@!^&&*))"检查s是否包含h中的任何键的最佳方法是什么,如果包含,则返回它包含的键的值?例如,对于上面的h和s的例子,输出应该是v1。编辑:只有字符串是用户定义的。哈希将始终相同。 最佳答案
我需要检查DateTime是否采用有效的ISO8601格式。喜欢:#iso8601?我检查了ruby是否有特定方法,但没有找到。目前我正在使用date.iso8601==date来检查这个。有什么好的方法吗?编辑解释我的环境,并改变问题的范围。因此,我的项目将使用jsapiFullCalendar,这就是我需要iso8601字符串格式的原因。我想知道更好或正确的方法是什么,以正确的格式将日期保存在数据库中,或者让ActiveRecord完成它们的工作并在我需要时间信息时对其进行操作。 最佳答案 我不太明白你的问题。我假设您想检查