关闭。这个问题是 off-topic 。它目前不接受答案。
想改善这个问题吗? Update the question 所以它是堆栈溢出的 on-topic。
8年前关闭。
Improve this question
背景
使用 XML 和 XSL 创建网站。 PostgreSQL 数据库的结构是为了表示必需的 XML 文档。 PostgreSQL 提供了许多与 XML 相关的函数,列在:
http://www.postgresql.org/docs/current/static/functions-xml.html
这是一个不同于从 XML 到数据库的问题,其中有很多解决方案。
更新: 澄清一下, 这个问题不需要使用给定 URL 中列出的 XML 函数 。它涉及基于将数据库表(和 JOIN 条件)映射到 XPath 表达式来创建 XML 文档的通用解决方案。
更新: 进一步说明,XQuery 用于搜索 XML 文档,就好像它们是一个数据库一样——就像 XPath 和 SQL 之间的交叉。我有一个数据库,我想生成一个 XML 文档。 XML 文档的结构应该根据映射到表和列的 XPath 表达式给出,而不是根据 XML 函数。
问题
我想解决的问题是使用 PostgreSQL 将表行中的值映射到 XPath 值。下面的例子用来说明这个问题。
例子
这个问题所涉及的 XPath 映射类似于:
root > people
person > person
person.first_name -> name/first
person.last_name -> name/last
person.age -> [@age]
account.person_id => person.person_id
account > person/account
account.number -> [@id]
PERSON 表可能类似于:person_id | first_name | last_name | age
123 | Peter | Parker | 18
456 | James | Jameson | 42
ACCOUNT 表可能类似于:account_id | person_id | number
1 | 123 | 123456789
<people>
<person age="18">
<name>
<first>Peter</first>
<last>Parker</last>
</name>
<account id="123456789" />
</person>
<person age="42">
<name>
<first>James</first>
<last>Jameson</last>
</name>
</person>
</people>
account)。最佳答案
它应该使用一个xml生成函数
postgres=# select xmlelement(name "people", xmlagg(xmlelement(name "person", xmlattributes(age), xmlforest(first_name as first, last_name as last)))) from person;
xmlelement
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
<people><person age="18"><first>Peter</first><last>Parker</last></person><person age="42"><first>James</first><last>Jameson</last></person></people>
postgres=# select table_to_xml('person', true, false, '');
table_to_xml
────────────────────────────────────────────────────────────────
<person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">↵
↵
<row> ↵
<first_name>Peter</first_name> ↵
<last_name>Parker</last_name> ↵
<age>18</age> ↵
</row> ↵
↵
<row> ↵
<first_name>James</first_name> ↵
<last_name>Jameson</last_name> ↵
<age>42</age> ↵
</row> ↵
↵
</person> ↵
(1 row)
关于sql - 将映射的 XPath 表达式转换为包含关系数据的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8641602/
我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
我有一个对象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
在我的应用程序中,我需要能够找到所有数字子字符串,然后扫描每个子字符串,找到第一个匹配范围(例如5到15之间)的子字符串,并将该实例替换为另一个字符串“X”。我的测试字符串s="1foo100bar10gee1"我的初始模式是1个或多个数字的任何字符串,例如,re=Regexp.new(/\d+/)matches=s.scan(re)给出["1","100","10","1"]如果我想用“X”替换第N个匹配项,并且只替换第N个匹配项,我该怎么做?例如,如果我想替换第三个匹配项“10”(匹配项[2]),我不能只说s[matches[2]]="X"因为它做了两次替换“1fooX0barXg
我有一个包含多个键的散列和一个字符串,该字符串不包含散列中的任何键或包含一个键。h={"k1"=>"v1","k2"=>"v2","k3"=>"v3"}s="thisisanexamplestringthatmightoccurwithakeysomewhereinthestringk1(withspecialcharacterslike(^&*$#@!^&&*))"检查s是否包含h中的任何键的最佳方法是什么,如果包含,则返回它包含的键的值?例如,对于上面的h和s的例子,输出应该是v1。编辑:只有字符串是用户定义的。哈希将始终相同。 最佳答案
有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳
我使用Nokogiri(Rubygem)css搜索寻找某些在我的html里面。看起来Nokogiri的css搜索不喜欢正则表达式。我想切换到Nokogiri的xpath搜索,因为这似乎支持搜索字符串中的正则表达式。如何在xpath搜索中实现下面提到的(伪)css搜索?require'rubygems'require'nokogiri'value=Nokogiri::HTML.parse(ABBlaCD3"HTML_END#my_blockisgivenmy_bl="1"#my_eqcorrespondstothisregexmy_eq="\/[0-9]+\/"#FIXMEThefoll
我的问题的一个例子是体育游戏。一场体育比赛有两支球队,一支主队和一支客队。我的事件记录模型如下:classTeam"Team"has_one:away_team,:class_name=>"Team"end我希望能够通过游戏访问一个团队,例如:Game.find(1).home_team但我收到一个单元化常量错误:Game::team。谁能告诉我我做错了什么?谢谢, 最佳答案 如果Gamehas_one:team那么Rails假设您的teams表有一个game_id列。不过,您想要的是games表有一个team_id列,在这种情况下
我正在学习http://ruby.railstutorial.org/chapters/static-pages上的RubyonRails教程并遇到以下错误StaticPagesHomepageshouldhavethecontent'SampleApp'Failure/Error:page.shouldhave_content('SampleApp')Capybara::ElementNotFound:Unabletofindxpath"/html"#(eval):2:in`text'#./spec/requests/static_pages_spec.rb:7:in`(root)'