我使用 XML 将数据提供给 InDesign 模板,并且正在从旧的、更简单的设置(Excel 电子表格中的映射单元格)切换到 FileMaker Pro。 FileMaker Pro 以与 InDesign 文档中已建立的 XML 结构略有不同的格式导出 XML。
从 FileMaker Pro 导出 XML 时,我可以选择使用 XSL 样式表,但我不知道如何创建一个(我发现的教程似乎含糊不清,或者假设我已经知道我不知道的事情).
FileMaker Pro 导出如下所示:
<?xml version="1.0" encoding="UTF-8" ?><!-- This grammar has been deprecated - use FMPXMLRESULT instead --><FMPDSORESULT xmlns="http://www.filemaker.com/fmpdsoresult"><ERRORCODE>0</ERRORCODE>
<DATABASE>Projects.fmp12</DATABASE>
<LAYOUT></LAYOUT>
<ROW MODID="1" RECORDID="2">
<Project_name></Project_name>
<City_1></City_1>
<Size></Size>
<Building></Building>
<City_2></City_2>
<Completion></Completion>
<Scope_of_work></Scope_of_work>
<Description></Description>
</ROW>
我需要为每条记录编写一个样式表,以便导出的 XML 与此结构匹配:
<project>
<project_title>
<name></name>
<city_1></city_1>
</project_title>
<project_information>
<size></size>
<building></building>
<city_2></city_2>
<completion></completion>
<scope_of_work></scope_of_work>
</project_information>
<description></description>
</project>
如有任何建议,我们将不胜感激。
最佳答案
您没有指定结果 XML 的外部节点是什么样的,或者它是否使用 namespace ,但这是怎么回事:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fm="http://www.filemaker.com/fmpdsoresult" exclude-result-prefixes="fm">
<xsl:output method="xml" indent="yes"/>
<xsl:variable name="rename">
<item from="Project_name" to="name" />
<item from="City_1" to="city_1" />
<item from="Size" to="size" />
<item from="Building" to="building" />
<item from="City_2" to="city_2" />
<item from="Completion" to="completion" />
<item from="Scope_of_work" to="scope_of_work" />
<item from="Description" to="description" />
</xsl:variable>
<xsl:template match="/*">
<root>
<xsl:apply-templates select="fm:ROW"/>
</root>
</xsl:template>
<xsl:template match="fm:ROW">
<project>
<project_title>
<xsl:apply-templates select="fm:Project_name | fm:City_1" mode="rename" />
</project_title>
<project_information>
<xsl:apply-templates
select="fm:size | fm:Building | fm:City_2 | fm:Completion | fm:Scope_of_work"
mode="rename" />
</project_information>
<xsl:apply-templates select="fm:Description" mode="rename" />
</project>
</xsl:template>
<xsl:template match="*" mode="rename">
<xsl:element name="{document('')//xsl:variable[@name = 'rename']/item[@from = local-name(current())]/@to}">
<xsl:value-of select="."/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
在此输入上运行时:
<FMPDSORESULT xmlns="http://www.filemaker.com/fmpdsoresult">
<ERRORCODE>0</ERRORCODE>
<DATABASE>Projects.fmp12</DATABASE>
<LAYOUT></LAYOUT>
<ROW MODID="1" RECORDID="2">
<Project_name>The best project</Project_name>
<City_1>New York</City_1>
<Size>3</Size>
<Building>Chrysler</Building>
<City_2>Los Angeles</City_2>
<Completion>2012-10-12</Completion>
<Scope_of_work>Big</Scope_of_work>
<Description>A fun project</Description>
</ROW>
<ROW MODID="1" RECORDID="2">
<Project_name>A pretty good project</Project_name>
<City_1>Chicago</City_1>
<Size>4</Size>
<Building>30 Fake St.</Building>
<City_2>Charlotte</City_2>
<Completion>2013-02-03</Completion>
<Scope_of_work>Medium</Scope_of_work>
<Description>A serious project</Description>
</ROW>
</FMPDSORESULT>
产生这个:
<root>
<project>
<project_title>
<name>The best project</name>
<city_1>New York</city_1>
</project_title>
<project_information>
<building>Chrysler</building>
<city_2>Los Angeles</city_2>
<completion>2012-10-12</completion>
<scope_of_work>Big</scope_of_work>
</project_information>
<description>A fun project</description>
</project>
<project>
<project_title>
<name>A pretty good project</name>
<city_1>Chicago</city_1>
</project_title>
<project_information>
<building>30 Fake St.</building>
<city_2>Charlotte</city_2>
<completion>2013-02-03</completion>
<scope_of_work>Medium</scope_of_work>
</project_information>
<description>A serious project</description>
</project>
</root>
关于xml - 创建 XSL 样式表以管理 FileMaker Pro XML 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14468350/
出于纯粹的兴趣,我很好奇如何按顺序创建PI,而不是在过程结果之后生成数字,而是让数字在过程本身生成时显示。如果是这种情况,那么数字可以自行产生,我可以对以前看到的数字实现垃圾收集,从而创建一个无限系列。结果只是在Pi系列之后每秒生成一个数字。这是我通过互联网筛选的结果:这是流行的计算机友好算法,类机器算法:defarccot(x,unity)xpow=unity/xn=1sign=1sum=0loopdoterm=xpow/nbreakifterm==0sum+=sign*(xpow/n)xpow/=x*xn+=2sign=-signendsumenddefcalc_pi(digits
我正在使用i18n从头开始构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在rubyonrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta
我有一个对象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
我对最新版本的Rails有疑问。我创建了一个新应用程序(railsnewMyProject),但我没有脚本/生成,只有脚本/rails,当我输入ruby./script/railsgeneratepluginmy_plugin"Couldnotfindgeneratorplugin.".你知道如何生成插件模板吗?没有这个命令可以创建插件吗?PS:我正在使用Rails3.2.1和ruby1.8.7[universal-darwin11.0] 最佳答案 随着Rails3.2.0的发布,插件生成器已经被移除。查看变更日志here.现在
我有一大串格式化数据(例如JSON),我想使用Psychinruby同时保留格式转储到YAML。基本上,我希望JSON使用literalstyle出现在YAML中:---json:|{"page":1,"results":["item","another"],"total_pages":0}但是,当我使用YAML.dump时,它不使用文字样式。我得到这样的东西:---json:!"{\n\"page\":1,\n\"results\":[\n\"item\",\"another\"\n],\n\"total_pages\":0\n}\n"我如何告诉Psych以想要的样式转储标量?解
我正在使用puppet为ruby程序提供一组常量。我需要提供一组主机名,我的程序将对其进行迭代。在我之前使用的bash脚本中,我只是将它作为一个puppet变量hosts=>"host1,host2"我将其提供给bash脚本作为HOSTS=显然这对ruby不太适用——我需要它的格式hosts=["host1","host2"]自从phosts和putsmy_array.inspect提供输出["host1","host2"]我希望使用其中之一。不幸的是,我终其一生都无法弄清楚如何让它发挥作用。我尝试了以下各项:我发现某处他们指出我需要在函数调用前放置“function_”……这
如何使用RSpec::Core::RakeTask初始化RSpecRake任务?require'rspec/core/rake_task'RSpec::Core::RakeTask.newdo|t|#whatdoIputinhere?endInitialize函数记录在http://rubydoc.info/github/rspec/rspec-core/RSpec/Core/RakeTask#initialize-instance_method没有很好的记录;它只是说:-(RakeTask)initialize(*args,&task_block)AnewinstanceofRake