如何修复 XSLT 中的“样式表编译期间报告错误”?

2023-12-04

当我运行 XSLT 代码时出现此 SaxonApiExceptionhttps://xslttest.appspot.com/。它返回此错误:

net.sf.saxon.s9api.SaxonApiException:样式表编译期间报告错误

我尝试了另一个在线测试仪https://www.freeformatter.com/xsl-transformer.html但我得到了同样的错误。 我尝试拆分我的 XSLT 代码。第一部分是在工资中提取邮政编码的过程,第二部分是在地址中提取邮政编码的过程。 当它们分开时,两者都可以工作,所以我认为我在“选择”元素中犯了一个错误,但找不到它。

这是我的 XSLT 代码...

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/EmployeeUDM_Response/Return/Employee">
  <xsl:for-each select="./Wages/Wage">
    <xsl:choose>
      <xsl:when test="DissimelarZipCode != ''">
        <xsl:value-of select="DissimelarZipCode" />
      </xsl:when>
      <otherwise>
        <xsl:for-each select="./Addresses/Address" />
          <!-- year -->
          <xsl:sort select="substring(StartDate, 1, 4)" order="descending" data-type="number"/>
          <!-- month -->
          <xsl:sort select="substring(StartDate, 6, 2)" order="descending" data-type="number"/>
          <!-- day -->
          <xsl:sort select="substring(StartDate, 9, 2)" order="descending" data-type="number"/>
          <xsl:if test="position() = 1">
            <xsl:value-of select="./ZipCode" />
          </xsl:if>
      </otherwise>
    </xsl:choose>
  </xsl:for-each>
</xsl:template>
</xsl:stylesheet>

...和我的 XML 文件

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"?>
<EmployeeUDM_Response xmlns:ns0="http://ESB/Schemas/v2/EmployeeUDM">
    <Header Type="Employee" Source="Biztalk ESB" />
    <Return>
        <Employee>
            <Wages>
                <Wage>                  
                    <StartDate>2019-04-22T00:00:00.0000000+02:00</StartDate>
                    <EndDate>2019-05-01T00:00:00.0000000+02:00</EndDate>
                    <DissimelarZipCode>5430 NU</DissimelarZipCode>
                </Wage>
            </Wages>
                        <Addresses>
                <Address>
                    <StartDate>2014-01-01T00:00:00.0000000+02:00</StartDate>
                    <EndDate></EndDate>
                    <ZipCode>6099 EB</ZipCode>
                </Address>
                <Address>
                    <StartDate>2015-01-01T00:00:00.0000000+02:00</StartDate>
                    <EndDate></EndDate>
                    <ZipCode>5487 YR</ZipCode>
                </Address>
            </Addresses>
        </Employee>
    </Return>
</EmployeeUDM_Response>

我期望输出 Wage 中的 ZipCode(本例中为 5430 NU),或者,如果 Wage 中的 ZipCode 为空,则输出具有最新 StartDate 的 Address 中的 ZipCode(本例中为 5487 YR)


1.应该有<xsl:otherwise>代替<otherwise>

2. <xsl:sort>应该在<xsl:for-each>.(您已在同一行结束循环)

3.循环播放Address,你将需要xpath../../Addresses/Address。因为当时<Wage>正在处理中。 (../将使您上升一级到父节点。)

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

    <xsl:template match="/EmployeeUDM_Response/Return/Employee">
        <xsl:for-each select="Wages/Wage">
            <xsl:choose>
                <xsl:when test="DissimelarZipCode != ''">
                    <xsl:value-of select="DissimelarZipCode" />
                </xsl:when>
                <xsl:otherwise>
                    <xsl:for-each select="../../Addresses/Address">
                        <!-- year -->
                        <xsl:sort select="substring(StartDate, 1, 4)" order="descending"
                            data-type="number" />
                        <!-- month -->
                        <xsl:sort select="substring(StartDate, 6, 2)" order="descending"
                            data-type="number" />
                        <!-- day -->
                        <xsl:sort select="substring(StartDate, 9, 2)" order="descending"
                            data-type="number" />
                        <xsl:if test="position() = 1">
                            <xsl:value-of select="ZipCode" />
                        </xsl:if>
                    </xsl:for-each>
                </xsl:otherwise>
            </xsl:choose>
        </xsl:for-each>
    </xsl:template>

</xsl:stylesheet>

https://xsltfiddle.liberty-development.net/pPzifpP

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何修复 XSLT 中的“样式表编译期间报告错误”? 的相关文章

  • 如何实现线性插值?

    假设我得到的数据如下 x 1 2 5 3 4 5 8 6 y 2 4 5 8 4 3 4 我想设计一个函数 它将在之间线性插值1 and 2 5 2 5 to 3 4 等等使用Python 我尝试过浏览这个Python教程 但我仍然无法理解

随机推荐

  • 使用 C# 将 Internet Explorer 浏览器嵌入到 Winforms 中

    我正在尝试使用 IE 打开指定 IP 的网页 为什么是 IE 因为并非每个 Windows 都安装了 Chrome 或 Firefox 并将其呈现在一个简单的 Winforms 窗口中 上面提到的网页是一个 BI 商业智能 网页 它会动态更
  • 如何解释CUDA中的指令重放

    谁能总结一下 CUDA 中不同类型的指令重放的定义和原因吗 他们是 inst replay overhead 共享重播开销 全局重播开销 全局缓存重播开销 本地重播开销 原子重播开销 共享加载重播 共享存储重播 global ld mem
  • FacesContext 无法在带有 JSF 2.3 的 Wildfly 14 中注入(Mojarra,主模块)

    我有一颗豆子 import javax faces context FacesContext import javax faces view ViewScoped Named ViewScoped public class SimpleBe
  • 无法使用 Shenandoah GC

    我不能放谢南多厄GC在尝试运行 Java 应用程序时工作 无论我尝试什么 调用时的输出如下java来自终端 或 CMD 的命令 VM初始化期间发生错误 不支持选项 XX UseShenandoahGC 在 Ubuntu WSL 和 Wind
  • 在 WPF MVVM 应用程序中添加材料设计后,数据网格不显示滚动条并且设计已过时

    我在 WPF MVVM 应用程序中使用了 Material Design 和 Dragablz TabablzControl Material Design 用于设置按钮和文本框的样式 网格位于选项卡控件内部 将批量数据加载到数据网格后 我
  • Log4j2 无法在 WebLogic 12.2.1 中工作

    我试图在 WebLogic 12 2 1 下运行的 Web 服务中添加 log4j 日志记录 但不知何故日志记录不起作用 这是我的 WAR 文件的 WEB INF classes 中的 log4j2 xml
  • 注册应用程序以打开图像文件

    我已成功注册我的应用程序以打开 PDF 文件 方法是将以下内容包含在我的 info plist 中
  • 最新浏览器中抛出 getusermedia DevicesNotFoundError

    我已经在 WebRtc 上使用 getUserMedia 一段时间了 但自从浏览器最新更新以来我一直无法使用它 在以前的版本上工作得很好 受影响的浏览器版本 火狐 57 0 4 铬 63 0 3239 132 示例代码 navigator
  • 引导程序启动时如何关闭菜单折叠?

    我有一个使用 Drupal 8 和 Bootstrap 3 构建的网站 如何在引导程序 Tour 启动时关闭菜单折叠 https www s1biose com 单击左侧菜单中的 开始参观 即可开始 游览 我希望单击 开始访问 按钮时 左右
  • Windows Xp 上的 Microsoft.Windows.ActCtx

    这些天我非常忙于开发一个 activex com 应用程序 我们的一些客户在严格限制的 Windows 环境下工作 所以我决定让我的应用程序免注册 我发现 genman32 exe 可以轻松创建清单 mt exe 也很有用 一切都很顺利 但
  • 如何在极坐标 matplotlib 图上绘制带有文本(即标签)的水平线? (Python)

    我正在尝试在极坐标图中标记节点 有 3 个被分割的 轴 我已经弄清楚如何使用象限来选择要标记的节点 但是 我不知道如何在图的边缘对齐这些 即axis maximum 我花了几个小时试图弄清楚这一点 我最好的选择是用 在左边或右边 但这是一个
  • HTML 加载动画

    我的网站在页面未加载时丢失了布局方案 我想做的是将动画链接到加载进度 就像进度条但没有进度条 例如 一个简单的动画 将进度与徽标的不透明度联系起来 因此 当页面加载 50 时 徽标的不透明度为 50 当徽标为 100 时 页面已加载 加载进
  • Silverlight FTP 上传

    我正在尝试通过 silverlight 应用程序将文件 ftp 到服务器 服务器文件系统上上传文件的位置位于 Web 服务器的沙箱区域之外 在这种情况下 Web 服务器根目录位于 C test www 上传文件的位置将位于 C User U
  • AWS cli 列出未使用的 elb

    我对 AWS 还很陌生 我试图列出未附加到任何实例的负载平衡 我尝试使用 aws cli 描述负载均衡器 但无法获得过滤 elb 的选项 请提供一些关于如何实现这一目标的建议 假设您已使用合适的密钥设置了 aws cli 这一长行 shel
  • Azure ML 免费试用:如何提​​交管道?

    我正在 MS Azure 上使用免费试用帐户 并且正在遵循本教程 https learn microsoft com en us azure machine learning tutorial designer automobile pri
  • 当我使用远程调用或 jQuery 远程加载部分/内容时,jquery ujs 不起作用

    我有一段 jQuery 代码 它用一些内容填充页面上的元素 var content note note id html another div html content 这很好地替换了另一个 div 的 html 但问题是任何数据远程属性都
  • 使用 Flexbox 出现意外的空白空间

    在问题仍然存在的情况下 我已将问题减少到最低限度 我不明白橙色空间是从哪里来的 A clue 删除一张图像 橙色空间就会消失 OutterContainer display flex flex wrap wrap flex directio
  • word vba 循环执行 if find.found

    我正在尝试使用 Word VBA 循环浏览文档 我想做的是 如果我发现 Text A vbTab 然后我想将其替换为 A 然后转到该行末尾 按一次 DEL 键并键入 br 但我无法管理它 当我运行这段代码时 不知何故 word 不断崩溃 S
  • Java EE 6 应用程序客户端登录

    我对 Java EE 很陌生 在开始创建我想要创建的应用程序时遇到了很多麻烦 我想要的是一个连接到 EJB 项目的 Swing 应用程序客户端 我正在使用 Glassfish v3 1 1 到目前为止 我拥有的是两个无状态 bean 其中一
  • 如何修复 XSLT 中的“样式表编译期间报告错误”?

    当我运行 XSLT 代码时出现此 SaxonApiExceptionhttps xslttest appspot com 它返回此错误 net sf saxon s9api SaxonApiException 样式表编译期间报告错误 我尝试