使用 XPATH 1.0 添加两个 hexBinary
我的 xml 文档看起来有点像这样(值都是 xsl:hexBinary
):
<Offsets>
<Offset>
<Name>ErrorOffset</Name>
<Value>DD</Value>
</Offset>
<Offset>
<Name>OtherOffset</Name>
<Value>FF</Value>
</Offset>
</Offsets>
<Value>
<Name>Error1</Name>
<Code>01</Code>
</Value>
<Value>
<Name>Error2</Name>
<Code>02</Code>
<Offset>ErrorOffset</Offset>
</Value>
现在我想将其转换为新的 xml 文件:
<Value>
<Name>Error1</Name>
<Code>01</Code>
</Value>
<Value>
<Name>Error2</Name>
<Code>DF</Code>
</Value>
应该发生的就是添加
。但普通的 +
返回 NaN
并且 sum()
只需要一个参数。 XSLT 和 XPATH 非常好,但让我感到不安的是,像添加两个十六进制值这样的简单操作并不像应有的那么简单。
my xml document looks somewhat like that (Values are both xsl:hexBinary
):
<Offsets>
<Offset>
<Name>ErrorOffset</Name>
<Value>DD</Value>
</Offset>
<Offset>
<Name>OtherOffset</Name>
<Value>FF</Value>
</Offset>
</Offsets>
<Value>
<Name>Error1</Name>
<Code>01</Code>
</Value>
<Value>
<Name>Error2</Name>
<Code>02</Code>
<Offset>ErrorOffset</Offset>
</Value>
now i want to transform this to a new xml file:
<Value>
<Name>Error1</Name>
<Code>01</Code>
</Value>
<Value>
<Name>Error2</Name>
<Code>DF</Code>
</Value>
All that should happen is adding <Offset>
to the basic <Value>
. But plain +
returns NaN
and sum()
expects only one parameter. XSLT and XPATH are quite nice, but it goes on my nerves that easy operations like adding two hex values just dont work as easy as it should.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我从未开发过十六进制数字的转换函数。这是与 Dimitre 示例相反的函数示例。我认为可以进一步减少样式表。还值得注意的是,转换函数可以参数化并推广到任何基数。
编辑:最近我刚刚意识到这里是交叉引用。因此应该使用键。
I never developed a conersión function for hex numbers. This is an example of a function that is reverse to the example of Dimitre. I think it would be possible to further reduce the stylesheet. It is also worth noting that the conversion function can be parameterized and generalized to any base.
Edit: Recently I just realized here is cross references. Therefore keys should be used.
这是一个解决方案,它结合了 FXSL 中存在的十六进制到十进制值的转换 使用借用的非 FXSL 模板 用于将十进制转换为十六进制。
此转换:
应用于此 XML 文档时:
产生正确的所需结果:
Here is a solution, which combines the conversion of hex to decimal values as present in FXSL with a borrowed non-FXSL template for convertion of decimal to hex.
This transformation:
when applied on this XML document:
produces the correct, wanted result:
这就是我在不使用 XSLT 的情况下执行此操作的方法:
十六进制到数字
反向函数更简单:
两者都假设您的十六进制数字始终有两位数字。
This is how I do it without using XSLT:
Hex to number
The reverse function is simpler:
Both assume your hex digits always have two digits.