我有一个要求,我需要从XML文档生成一个文本文件,生成的文本文件应该是基于某些规则的某种特定格式.我的XML看起来如下所示:
<info>
<Tag1>
<Tag2>
<Tag3>
<PartNo>12 </PartNo>
</Tag3>
<DBOMInf1> 111 </DBOMInf1>
<DBOMInf2> sring </DBOMInf2>
</Tag2>
<Tag2>
<Tag3>
<PartNo>12 </PartNo>
</Tag3>
<DBOMInf1> 555 </DBOMInf1>
<DBOMInf2> abcd </DBOMInf2>
</Tag2>
</Tag1>
<Tag4>
<Tag5>
<Description>1200 liter </Description>
<No>12</No>
<Name>Engine</Name>
<Id>700</Id>
</Tag5>
</Tag4>
<action>
<actionId>700</actionId>
</action>
</info>
Run Code Online (Sandbox Code Playgroud)
ACTIONID | NO | DESCRIPTION | NAME | DBOMInf1 | DBOMInf2 700 | 12 |发动机| 1200升| 111 | sring 700 | 12 |发动机| 1200升| 555 | ABCD
我是新手XSLT编程可以任何机构共享一些信息或示例如何实现这一点,我熟悉XSLT的基础,如模板匹配,选择值.
任何链接或示例都将非常有用.谢谢
在我使用的OLAP数据库中,有一个"位置"层次结构,包括级别Company,Region,Area,Site,Room,Till.对于某个特定公司,我需要编写一些列出所有地区,区域和站点的MDX(但不包括站点下面的任何级别).目前我通过以下MDX实现了这一目标
HIERARCHIZE({
[Location].[Test Company],
Descendants([Location].[Test Company], [Location].[Region]),
Descendants([Location].[Test Company], [Location].[Area]),
Descendants([Location].[Test Company], [Location].[Site])
})
Run Code Online (Sandbox Code Playgroud)
因为我对MDX的了解有限,我想知道是否有一种更简单的方法可以做到这一点,用一个命令而不是四个命令?是否有一种不那么冗长的方法来实现这一目标,还是我的榜样是实现这一目标的唯一真正方式?
我正在研究Ruby-on-Rails 3.0.5应用程序,该应用程序具有许多数字字段。上面的那些人已经裁定,所有数字“数量”字段的存储精度为15(即小数点后15位)。
在一个特定的字段中,存储的数字为99999.999999999900000。要将其显示在屏幕上,应用程序只需执行此操作
<%= number_with_precision(item.quantity, :precision => 15) %>
Run Code Online (Sandbox Code Playgroud)
但是,这将在页面上显示以下内容
99999.999999999898137
Run Code Online (Sandbox Code Playgroud)
同样,当输入99999.999999999999999(是的,是的。小数点后15位)时,该数字将显示为100000.000000000000000,即使它存储在数据库中,其所有荣耀都为9。
我可以删除对number_with_precision的使用,而只需执行<%= item.quantity%>,这样就可以正常显示,但是我相信number_with_precision对于本地化是必需的(这对于应用程序很重要)。
那么,这是number_with_precision的错误吗?是否有另一种方式格式化与本地化兼容的大精度数字?还是由于浮点运算而无法避免?
我的确意识到,输入如此多的小数位数是不必要的,降低精度水平可能是要走的路,但是我将需要有说服力的论据来说服即将成为现实的力量。
我正在处理下面的 XML,其中我需要删除名字中的特殊字符。(Andr\xc3\xa9s) 中的 \xc3\xa9 不确定这个字符的实际名称是什么。如果我按原样处理名字,那么供应商系统就会失败
\n\n<?xml version="1.0" encoding="UTF-8"?>\n<reportentry>\n<reportdata>\n <id>12345</id>\n <firstname>Andr\xc3\xa9s</firstname>\n <lastname>Williams</lastname>\n</reportdata>\n</reportentry>\nRun Code Online (Sandbox Code Playgroud)\n\n我只是尝试了有效的替换功能,下面是代码。不知道有没有更好的方法来处理?有什么建议 ?
\n\n <xsl:value-of select="replace($string1, \'\xc3\xa9\', \'e\')"/>\nRun Code Online (Sandbox Code Playgroud)\n\n完整代码
\n\n<?xml version="1.0" encoding="UTF-8"?>\n<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"\nxmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" version="2.0">\n\n<xsl:variable name="string1" select="/reportentry/reportdata/firstname"/>\n<xsl:variable name="comma" select="\',\'"/>\n<xsl:output method="text" omit-xml-declaration="yes"/>\n\n<xsl:template match="/reportentry">\n\n <xsl:value-of select="reportdata/id"/>\n <xsl:value-of select="$comma"/>\n <xsl:value-of select="replace($string1, \'\xc3\xa9\', \'e\')"/>\n <xsl:value-of select="$comma"/>\n <xsl:value-of select="reportdata/lastname"/>\n\n</xsl:template>\n</xsl:stylesheet>\nRun Code Online (Sandbox Code Playgroud)\n\n我预期结果为 12345,Andres,Williams
\n