这是一个非常复杂的问题,超出了我对 XSLT 的了解——我仍在学习,无论我读了多少 O'Reilly 的 XSLT 书,我都在我的头脑中。
我有一个多方面的问题,我已经为它生成了一个输入 XML 文件,之后我也会尝试解释这些要求。
输入
<roottag>
<body>
<header>
<r>
<c>
<d>Header Tag</d><!-- This can include spaces-->
<e>System generated trash</e>
</c>
</r>
<r>
<c>
<d>Sub Header Tag A</d>
<e>System generated trash</e>
</c>
<c>
<d>Sub Header Value A</d>
<e>System generated trash</e>
</c>
</r>
<r>
<c>
<d>Sub Header Tag B</d>
<e>System generated trash</e>
</c>
<c>
<d>Sub Header Value B</d>
<e>System generated trash</e>
</c>
</r>
<r>
<c>
<d>Sub Header Tag C</d>
<e>System generated trash</e>
</c>
<c>
<d>Sub Header Value C</d>
<e>System generated trash</e>
</c>
</r>
</header>
<information>
<r>Body of document</r>
<r>Appears here but have an XSLT that deals with this</r>
</informtaion>
<footer>
<r>
<c>
<d>Footer Tag</d><!-- This can include spaces-->
<e>System generated trash</e>
</c>
</r>
<r>
<c>
<d>Sub Footer Tag A</d>
<e>System generated trash</e>
</c>
<c>
<d>Sub Footer Value A</d>
<e>System generated trash</e>
</c>
</r>
<r>
<c>
<d>Sub Footer Tag B</d>
<e>System generated trash</e>
</c>
<c>
<d>Sub Footer Value B</d>
<e>System generated trash</e>
</c>
</r>
<r>
<c>
<d>Sub Footer Tag C</d>
<e>System generated trash</e>
</c>
<c>
<d>Sub Footer Value C</d>
<e>System generated trash</e>
</c>
</r>
</footer>
</body>
</roottag>
输出
<?xml version="1.0" encoding="utf-8"?>
<roottag>
<body>
<header>
<HeaderTag>
<!-- without spaces -->
<HeaderName>Header Tag</HeaderName>
<!-- This needs to preserve spaces-->
</HeaderTag>
<SubHeaderTagA>
<!-- without spaces -->
<HeaderName>Sub Header Tag A</HeaderName>
<!-- This needs to preserve spaces-->
<HeaderValue>Sub Header Value A</HeaderValue>
</SubHeaderTagA>
<SubHeaderTagB>
<HeaderName>Sub Header Tag B</HeaderName>
<HeaderValue>Sub Header Value B</HeaderValue>
</SubHeaderTagB>
<SubHeaderTagC>
<HeaderName>Sub Header Tag C</HeaderName>
<HeaderValue>Sub Header Value C</HeaderValue>
</SubHeaderTagC>
</header>
<information>
<r>Body of document</r>
<r>Appears here but have an XSLT that deals with this</r>
</information>
<footer>
<FooterTag>
<FooterName>Footer Tag</FooterName>
</FooterTag>
<SubFooterTagA>
<FooterName>Sub Footer Tag A</FooterName>
<FooterValue>Sub Footer Value A</FooterValue>
</SubFooterTagA>
<SubFooterTagB>
<FooterName>Sub Footer Tag B</FooterName>
<FooterValue>Sub Footer Value B</FooterValue>
</SubFooterTagB>
<SubFooterTagC>
<FooterName>Sub Footer Tag C</FooterName>
<FooterValue>Sub Footer Value C</FooterValue>
</SubFooterTagC>
</footer>
</body>
</roottag>
所以解释一下我看到的问题,以及我遇到的问题。
- RemovingSpaces: roottag/body/header/r/c/d 中保存的值可以并且通常包含空格,所以我需要一种方法来删除我从网站 [addLink] 上的问题中找到的这个值,但这也替换了值因此,当我稍后在该过程中使用数据时,它没有输出所需的空格。
- 仅用第一个值替换 R: 我不知道如何做到这一点,我尝试和研究的所有内容似乎都使用第二个值作为值。我已经结束了。
页眉或页脚名称/值: 同样,我的知识有限,如果这是可能的,或者每个标签都需要单独匹配?
页眉和页脚标签的移动: 我没有将其包含在所需的输出中,但我认为我可能需要这样做 - 是否可以将页眉标签和页脚标签移到正文标签之外?所以 XML 将是:roottag-header-body-information-/body-footer/-/rt
如果您需要更多说明,请告诉我。