我正在为一个 XML 文件开发 XSLT,该文件具有一组特定“ID”的值。我需要通过我的转换器运行它,它将这些值输出到数据库,但我必须识别这些值是 ID。我需要识别这些值的是另一个文件中的描述。这个描述应该成为输出 XML 的元素名称,而不是我现在使用的 ID。相同的计数器 ID 位于单独的文件中,并包含我需要用作元素名称的描述。这是一个例子,以防我让你感到困惑。
<!-- XML with values -->
<?xml version="1.0" encoding="ISO-8859-1"?>
<root>
<series>
<sampleInfo>
<timestamp>1/1/2013 12:00 AM</timestamp>
<timestamp>1/2/2013 12:00 AM</timestamp>
<timestamp>1/3/2013 12:00 AM</timestamp>
<timestamp>1/4/2013 12:00 AM</timestamp>
</sampleInfo>
<value>
<series>
<value>
<int>0</int>
<int>9</int>
<int>0</int>
<int>9</int>
</value>
<id>
<counterID>100</counterID>
.
.
</id>
</series>
<series>
<value>
<int>3</int>
<int>6</int>
<int>3</int>
<int>6</int>
</value>
<id>
<counterID>120</counterID>
.
.
.
</id>
</series>
</value>
</series>
</root>
基本上,每个时间戳对于每个对应的 counterID 都有自己的值。现在这里是另一个 XML 文件的示例,我从中获取信息。
<!-- XML with descriptions -->
<?xml version="1.0" encoding="ISO-8859-1"?>
<root>
<counterInfo>
<id>100</id>
<description>Blah</description>
</counterInfo>
<counterInfo>
<id>120</id>
<description>Derp</description>
</counterInfo>
</root>
因此,一旦我转换了原始文档(带有值的文档),我的输出(平面)XML 看起来有点像:
<root>
<element>
<timestamp>1/1/2013 12:00 AM</timestamp>
<C100>0</C100> <!-- Since XML doesn't allow numeric element fields, I add a C -->
<C120>3</C120>
</element>
<element>
<timestamp>1/2/2013 12:00 AM</timestamp>
<C100>9</C100>
<C120>6</C120>
</element>
<element>
<timestamp>1/3/2013 12:00 AM</timestamp>
<C100>0</C100>
<C120>3</C120>
</element>
<element>
<timestamp>1/4/2013 12:00 AM</timestamp>
<C100>9</C100>
<C120>6</C120>
</element>
</root>
然后我需要做的是转换已经很平坦的 XML,就像上面一样,以显示它。
<root>
<element>
<timestamp>1/1/2013 12:00 AM</timestamp>
<Blah>0</Blah>
<Derp>3</Derp>
</element>
<element>
<timestamp>1/2/2013 12:00 AM</timestamp>
<Blah>9</Blah>
<Derp>6</Derp>
</element>
<element>
<timestamp>1/3/2013 12:00 AM</timestamp>
<Blah>0</Blah>
<Derp>3</Derp>
</element>
<element>
<timestamp>1/4/2013 12:00 AM</timestamp>
<Blah>9</Blah>
<Derp>6</Derp>
</element>
</root>
我做了一些搜索,大多数结果都建议参数,但我转换这些的方式可能会让这有点困难。我有一个 Java 转换器,它是大型转换器存储库的一部分,它从该存储库中提取 XSLT 以转换传递给它的文件。在转换器中,我们从档案中提取需要转换的文件,然后分别进行处理。所以我的问题是......当转换器到达列表中的那个文件时,我如何为 XSLT 提供该文件名,以及如何将该文件名传递给 XSLT?
那我是不是把事情复杂化了?有什么简单的方法可以做到这一点吗?让我知道是否需要清理任何东西。