dyn:evaluate 扩展函数在 Xalan-J 2.7.1 中是否存在问题?

2023-11-29

我很困惑为什么下面的示例程序拒绝正确应用我的样式表。看起来dyn:evaluateXalan 2.7.1 中拒绝处理某些 XPath 变量。

运行以下程序xalan-j在类路径中产生以下结果:

package com.testing2.xslt;

import java.io.*;
import java.util.logging.*;
import javax.xml.transform.*;
import javax.xml.transform.stream.*;

public class DynEvaluateTransform {

    private static final String XSLT = "" +
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<xsl:stylesheet xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\"\n" +
"    xmlns:det=\"org:example:DynEvaluateTransform\"\n" +
"    xmlns:dyn=\"http://exslt.org/dynamic\"\n" +
"    extension-element-prefixes=\"dyn\"\n" +
"    version=\"1.0\">\n" +
"    \n" +
"    <xsl:variable name=\"input-doc\" select=\"document('input.xml', /)\" />\n" +
"    <xsl:variable name=\"selections\" select=\"$input-doc/det:selections\" />\n" +
"    \n" +
"    <xsl:template match=\"/\">\n" +
"        <xsl:choose>\n" +
"            <xsl:when test=\"function-available('dyn:evaluate')\">\n" +
"                <xsl:message>dyn:evaluate available</xsl:message>\n" +
"            </xsl:when>\n" +
"            <xsl:otherwise>\n" +
"                <xsl:message>dyn:evaluate not available</xsl:message>\n" +
"            </xsl:otherwise>\n" +
"        </xsl:choose>\n" +
"        <xsl:message>input.xml content:</xsl:message>\n" +
"        <xsl:for-each select=\"$selections/*\">\n" +
"            <xsl:message>{<xsl:value-of select=\"namespace-uri()\"/>}<xsl:value-of select=\"local-name()\"/></xsl:message>\n" +
"        </xsl:for-each>        \n" +
"        <xsl:for-each select=\"//@condition\">\n" +
"            <xsl:message><xsl:value-of select=\".\"/></xsl:message>\n" +
"            <xsl:message><xsl:value-of select=\"string(dyn:evaluate(string(.)))\"/></xsl:message>\n" +
"        </xsl:for-each>\n" +
"    </xsl:template>\n" +
"    \n" +
"</xsl:stylesheet>";

    private static final String EXAMPLE = "" +
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<foos xmlns=\"org:example:DynEvaluateTransform\">    \n" +
"    <foo condition=\"true()\" />    \n" +
"    <foo condition=\"false()\" />    \n" +
"    <foo condition=\"false() or true()\" />\n" +
"    <foo condition=\"$selections\" />\n" +
"    <foo condition=\"$selections/*\" />\n" +
"    <foo condition=\"$selections/*[local-name()='a']\" />\n" +
"    <foo condition=\"$selections/element::node()[local-name()='a']\" />\n" +
"    <foo condition=\"local-name($selections/*)\" />\n" +
"    <foo condition=\"not($selections/*[local-name()='a' and namespace-uri()='org:example:foo'])\" />\n" +
"    <foo condition=\"$selections/*[local-name()='b' and namespace-uri()='org:example:foo']\" />\n" +
"    <foo condition=\"$selections/*[local-name()='c' and namespace-uri()='org:example:foo']\" />\n" +
"    <foo condition=\"not($selections/*[local-name()='a' and namespace-uri()='org:example:foo']) or ($selections/*[local-name()='b' and namespace-uri()='org:example:foo'] and $selections/*[local-name()='c' and namespace-uri()='org:example:foo'])\" />\n" +
"</foos>";

    private static final String INPUT = "" +
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<selections xmlns=\"org:example:DynEvaluateTransform\">\n" +
"    <a xmlns=\"org:example:foo\"/>\n" +
"    <b xmlns=\"org:example:foo\"/>\n" +
"    <c xmlns=\"org:example:foo\"/>\n" +
"</selections>";

    private TransformerFactory xalanTransFact;    

    public DynEvaluateTransform() {
        xalanTransFact = new org.apache.xalan.processor.TransformerFactoryImpl();
        xalanTransFact.setURIResolver(new Resolver());
    }

    private void applyTransform() {
        // XSLT(EXAMPLE) --> output.xml
        //         ^
        //         |
        //       INPUT
        OutputStreamWriter writer = null;

        try {
            String outputFileName = DynEvaluateTransform.getLocalFileName("output.xml");

            File file = new File(outputFileName);
            writer = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");

            System.out.println(org.apache.xalan.Version.getVersion());

            Transformer transformer = xalanTransFact.newTransformer(new StreamSource(new StringReader(XSLT)));
            transformer.setOutputProperty(OutputKeys.INDENT, "yes");
            transformer.setOutputProperty(OutputKeys.METHOD, "xml");
            transformer.setOutputProperty(OutputKeys.ENCODING, "utf-8");

            transformer.transform(
                    new StreamSource(new StringReader(EXAMPLE)),
                    new StreamResult(writer));

        } catch (UnsupportedEncodingException ex) {
            Logger.getLogger(DynEvaluateTransform.class.getName()).log(Level.SEVERE, null, ex);
        } catch (FileNotFoundException ex) {
            Logger.getLogger(DynEvaluateTransform.class.getName()).log(Level.SEVERE, null, ex);
        } catch (TransformerConfigurationException ex) {
            Logger.getLogger(DynEvaluateTransform.class.getName()).log(Level.SEVERE, null, ex);
        } catch (TransformerException ex) {
            Logger.getLogger(DynEvaluateTransform.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            if (writer != null) {
                try {
                    writer.close();
                } catch (IOException ex) {
                }
            }
        }
    }

    private void rebuildInput() {
        // ignore - this just writes the input.xml file, so we can later reference it
        StringReader strReader = null;
        OutputStreamWriter fileWriter = null;
        try {
            String fileName = getLocalFileName("input.xml");

            strReader = new StringReader(INPUT);
            File file = new File(fileName);
            fileWriter = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");

            TransformerFactory factory = TransformerFactory.newInstance();
            Transformer transformer = factory.newTransformer();
            transformer.setOutputProperty(OutputKeys.INDENT, "yes");
            transformer.setOutputProperty(OutputKeys.METHOD, "xml");

            transformer.transform(
                    new StreamSource(strReader),
                    new StreamResult(fileWriter));

        } catch (UnsupportedEncodingException ex) {
            Logger.getLogger(DynEvaluateTransform.class.getName()).log(Level.SEVERE, null, ex);
        } catch (FileNotFoundException ex) {
            Logger.getLogger(DynEvaluateTransform.class.getName()).log(Level.SEVERE, null, ex);
        } catch (TransformerConfigurationException ex) {
            Logger.getLogger(DynEvaluateTransform.class.getName()).log(Level.SEVERE, null, ex);
        } catch (TransformerException ex) {
            Logger.getLogger(DynEvaluateTransform.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(DynEvaluateTransform.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            if (strReader != null) {
                strReader.close();
            }
            if (fileWriter != null) {
                try {
                    fileWriter.close();
                } catch (IOException ex) {
                }
            }
        }
    }

    public static void main(String[] args) {
        DynEvaluateTransform det = new DynEvaluateTransform();
        det.rebuildInput();
        det.applyTransform();
    }   

    private static String getLocalFileName(String href) {
        String name = System.getProperty("user.dir");
        if (!name.endsWith(File.separator)) {
            name += File.separator;
        }
        name += href;
        return name;
    }

    private static class Resolver implements URIResolver {

        @Override
        public Source resolve(String href, String base) throws TransformerException {
            if ("input.xml".equals(href)) {                
                return new StreamSource(new File(DynEvaluateTransform.getLocalFileName(href)));
            } else {
                return null;
            }
        }
    }
}
Xalan Java 2.7.1
SystemId Unknown; Line #14; Column #30; dyn:evaluate available
SystemId Unknown; Line #20; Column #22; input.xml content:
SystemId Unknown; Line #22; Column #26; {org:example:foo}a
SystemId Unknown; Line #22; Column #26; {org:example:foo}b
SystemId Unknown; Line #22; Column #26; {org:example:foo}c
SystemId Unknown; Line #25; Column #26; true()
SystemId Unknown; Line #26; Column #26; true
SystemId Unknown; Line #25; Column #26; false()
SystemId Unknown; Line #26; Column #26; false
SystemId Unknown; Line #25; Column #26; false() or true()
SystemId Unknown; Line #26; Column #26; true
SystemId Unknown; Line #25; Column #26; $selections
SystemId Unknown; Line #26; Column #26; 
SystemId Unknown; Line #25; Column #26; $selections/*
SystemId Unknown; Line #26; Column #26; 
SystemId Unknown; Line #25; Column #26; $selections/*[local-name()='a']
SystemId Unknown; Line #26; Column #26; 
SystemId Unknown; Line #25; Column #26; $selections/element::node()[local-name()='a']
SystemId Unknown; Line #26; Column #26; 
SystemId Unknown; Line #25; Column #26; local-name($selections/*)
SystemId Unknown; Line #26; Column #26; 
SystemId Unknown; Line #25; Column #26; not($selections/*[local-name()='a' and namespace-uri()='org:example:foo'])
SystemId Unknown; Line #26; Column #26; true
SystemId Unknown; Line #25; Column #26; $selections/*[local-name()='b' and namespace-uri()='org:example:foo']
SystemId Unknown; Line #26; Column #26; 
SystemId Unknown; Line #25; Column #26; $selections/*[local-name()='c' and namespace-uri()='org:example:foo']
SystemId Unknown; Line #26; Column #26; 
SystemId Unknown; Line #25; Column #26; not($selections/*[local-name()='a' and namespace-uri()='org:example:foo']) or ($selections/*[local-name()='b' and namespace-uri()='org:example:foo'] and $selections/*[local-name()='c' and namespace-uri()='org:example:foo'])
SystemId Unknown; Line #26; Column #26; true

示例程序使用提供的转换 (XSLT) 转换示例输入 (EXAMPLE),该转换采用输入文件 (INPUT、input.xml),通过打开document()函数,作为“参数”。该输入文件包含一组使用 XPath 表达式进行测试的元素(位于示例中)。

程序的输出表明dyn:evaluate支持功能,即input.xml如果正确读取,简单的 XPath 表达式可以正确计算,但是一旦涉及 XPath 变量,它就会中断。

以下涉及的所有文档的可读版本。

输入.xml

<?xml version="1.0" encoding="UTF-8"?>
<selections xmlns="org:example:DynEvaluateTransform">
    <a xmlns="org:example:foo"/>
    <b xmlns="org:example:foo"/>
    <c xmlns="org:example:foo"/>
</selections>

EXAMPLE

<?xml version="1.0" encoding="UTF-8"?>
<foos xmlns="org:example:DynEvaluateTransform">    
    <foo condition="true()" />    
    <foo condition="false()" />    
    <foo condition="false() or true()" />
    <foo condition="$selections" />
    <foo condition="$selections/*" />
    <foo condition="$selections/*[local-name()='a']" />
    <foo condition="$selections/element::node()[local-name()='a']" />
    <foo condition="local-name($selections/*)" />
    <foo condition="not($selections/*[local-name()='a' and namespace-uri()='org:example:foo'])" />
    <foo condition="$selections/*[local-name()='b' and namespace-uri()='org:example:foo']" />
    <foo condition="$selections/*[local-name()='c' and namespace-uri()='org:example:foo']" />
    <foo condition="not($selections/*[local-name()='a' and namespace-uri()='org:example:foo']) or ($selections/*[local-name()='b' and namespace-uri()='org:example:foo'] and $selections/*[local-name()='c' and namespace-uri()='org:example:foo'])" />
</foos>

XSLT

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:det="org:example:DynEvaluateTransform"
    xmlns:dyn="http://exslt.org/dynamic"
    extension-element-prefixes="dyn"
    version="1.0">

    <xsl:variable name="input-doc" select="document('input.xml', /)" />
    <xsl:variable name="selections" select="$input-doc/det:selections" />

    <xsl:template match="/">
        <xsl:choose>
            <xsl:when test="function-available('dyn:evaluate')">
                <xsl:message>dyn:evaluate available</xsl:message>
            </xsl:when>
            <xsl:otherwise>
                <xsl:message>dyn:evaluate not available</xsl:message>
            </xsl:otherwise>
        </xsl:choose>
        <xsl:message>input.xml content:</xsl:message>
        <xsl:for-each select="$selections/*">
            <xsl:message>{<xsl:value-of select="namespace-uri()"/>}<xsl:value-of select="local-name()"/></xsl:message>
        </xsl:for-each>        
        <xsl:for-each select="//@condition">
            <xsl:message><xsl:value-of select="."/></xsl:message>
            <xsl:message><xsl:value-of select="string(dyn:evaluate(string(.)))"/></xsl:message>
        </xsl:for-each>
    </xsl:template>

</xsl:stylesheet>

Xalan 是否不支持 XPath 变量dyn:evaluate争论?我是否正确定义了表达式?报告称,尝试在选择 Xalan 的情况下在 oXygen 中运行此样式表java.lang.RuntimeException: ElemTemplateElement error: Function not supported!当第一次遇到 XPath 变量时。

Edit:

我重写了这个问题,以澄清我的实际问题是什么。


正如所担心的,XPath 变量中的结果树片段似乎不受dyn:evaluate在 Xalan 2.7.1 中。请注意,具有非结果树片段值的变量有效。

我编写了自己的扩展函数(dyn:evaluate等效),它计算 XPath 表达式,但也无法处理变量中的结果树片段(收到this method is not yet supported例外)。这可能是 JAXP 提供的 XPath 引擎实现的限制。

也许它可以与不同的 XPath 引擎实现一起工作。

我放弃了尝试完成这项工作,并且会避免将结果树片段填充到 XPath 变量中dyn:evaluate正在播放。我只会通过以下方式提供评估我的状况所需的信息xsl:param字符串值,而不是使用外部 XML 文件的艰难方式。 Xalan 的扩展函数将检查选择是否实际存在。

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

dyn:evaluate 扩展函数在 Xalan-J 2.7.1 中是否存在问题? 的相关文章

  • 如何在 IDEA Intellij 上使用 Spring-boot 自动重新加载

    我写了一个基于Spring boot tomcat freemarker的项目 我运行成功 但是每当我修改一些模板和java类时 我必须重新启动服务器或使用Intellij上的 重新加载更改的类 菜单才能使更改生效 浪费很多时间 然后我尝试
  • 从文本文件中读取阿拉伯字符

    我完成了一个项目 在该项目中我读取了用记事本编写的文本文件 我的文本文件中的字符是阿拉伯语 文件编码类型是UTF 8 当在 Netbeans 7 0 1 中启动我的项目时 一切似乎都正常 但是当我将项目构建为 jar 文件时 字符以这种方式
  • 使类只能从特定类实例化

    假设我有 3 节课class1 class2 and class3 我怎样才能拥有它class1只能通过实例化class2 class1 object new class1 但不是 class3 或任何其他类 我认为它应该与修饰符一起使用
  • 使用 Apache POI Excel 写入特定单元格位置

    如果我有一个未排序的参数 x y z 列表 是否有一种简单的方法将它们写入使用 POI 创建的 Excel 文档中的特定单元格 就好像前两个参数是 X 和Y 坐标 例如 我有如下行 10 4 100 是否可以在第 10 行第 4 列的单元格
  • 即使在轴上进行自动量程调整,我也可以保留积分刻度线吗?

    我 偷 了一些代码here http fxexperience com 2012 01 curve fitting and styling areachart 拥有一个AreaChart我在 FXML 中使用了 平滑线条 它的工作原理如下
  • 在java中将字符串日期转换为美国格式

    我有下面的代码 其中日期为字符串类型 我必须将其设置为美国格式 所以下面我已经展示了它 private static final SimpleDateFormat usOutputDate new SimpleDateFormat MM d
  • java setFullScreenWindow 在 Mac 中隐藏登录对话框

    我使用的是全屏窗口 类似于屏幕保护程序 使用这里的方法 GraphicsEnvironment getLocalGraphicsEnvironment getDefaultScreenDevice setFullScreenWindow t
  • 插入时的 iBatis 判别器

    我有一个抽象类Example以及与之相伴的具体子类 我使用鉴别器来提取数据out数据库的 像这样
  • 用于层次结构树角色的 Spring Security / Java EE 解决方案

    我知道 Spring Security 非常适合标准角色和基于权限的授权 我不确定的是这种情况 系统中管理着 10 000 名员工 员工被组织成组织结构图 跨部门的谁向谁报告的树 其中一些员工是用户 这些用户仅被允许访问其职责范围内的员工
  • 拆分/标记化/扫描字符串并注意引号

    Java中是否有默认 简单的方法来分割字符串 但要注意引号或其他符号 例如 给定以下文本 There s a man that live next door in my neighborhood and he gets me down Ob
  • 在 java 中运行外部应用程序但不要等待它完成

    我正在用java编写一个应用程序 允许我运行其他应用程序 为此 我使用了 Process 类对象 但当我这样做时 应用程序会等待进程结束 然后再退出 有没有办法在 Java 中运行外部应用程序 但不等待它完成 public static v
  • 如何在不反编译的情况下更改已编译的.class文件?

    我想更改 class 文件方法 我安装 JD Eclipse Decompiler 并打开 class 文件 我添加了一些代码并保存 class 文件 但是 class 文件没有改变 我不知道如何使用反编译器 如果可能的话 如何在不使用反编
  • C 与 C++ 中的 JNI 调用不同?

    所以我有以下使用 Java 本机接口的 C 代码 但是我想将其转换为 C 但不知道如何转换 include
  • HTTP 状态 405 - 此 URL java servlet 不支持 HTTP 方法 POST [重复]

    这个问题在这里已经有答案了 我无法使页面正常工作 我有要发布的表单方法和我的 servlet 实现doPost 然而 它不断地向我表明我并不支持POST方法 我只是想做一个简单的网站并将值插入到我的 MySQL 数据库中 type Stat
  • BadPaddingException:无效的密文

    我需要一些帮助 因为这是我第一次编写加密代码 加密代码似乎工作正常 但解密会引发错误 我得到的错误是 de flexiprovider api exceptions BadPaddingException 无效的密文 in the 解密函数
  • 如何从 JavaFX 中的另一个控制器类访问 UI 元素?

    我有一个使用 NetBeans 8 编写的 JavaFX Java 8 应用程序 没有SceneBuilder 我的应用程序有一个主窗口 该窗口有自己的 FXML 文件 primary fxml 和自己的控制器类 FXMLPrimaryCo
  • 让 Hibernate 和 SQL Server 与 VARCHAR 和 NVARCHAR 良好配合

    我目前正在大型数据库的某些表中启用 UTF 8 字符 这些表已经是 MS SQL 类型 NVARCHAR 此外 我还有几个使用 VARCHAR 的字段 Hibernate 与 JDBC 驱动程序的交互存在一个众所周知的问题 例如 参见在 h
  • spring data jpa复合键重复键记录插入导致更新

    我有一个具有复合键的实体 我试图通过使用 spring data jpa 存储库到 mysql 数据库来持久化它 如下所示 Embeddable public class MobileVerificationKey implements S
  • 受信任的 1.5 小程序可以执行系统命令吗?

    如果是的话 这个能力有什么限制吗 具体来说 我需要以 Mac OSX 为目标 我以前用过这个在 Windows 系统上启动东西 但从未在 Mac 上尝试过 public void launchScript String args Strin
  • Java/MongoDB 按日期查询

    我将一个值作为 java util Date 存储在我的集合中 但是当我查询以获取两个特定日期之间的值时 我最终得到的值超出了范围 这是我的代码 插入 BasicDBObject object new BasicDBObject objec

随机推荐

  • 用户集合中所有用户的列表第一次使用 Meteor JS 时不工作

    我在列出用户集合中的所有用户时遇到问题 当我进入列表页面时 仅显示当前登录用户的详细信息 但是 一旦页面刷新 所有用户都会被列出 这样就可以了 在服务器端 我有以下发布代码 Meteor publish userList function
  • 区分空对象类型和其他具体类型

    所有这些都编译没有错误 interface Empty interface MaybeEmpty a number var one Object 20 var two Empty 21 var three 22 var four Maybe
  • 在 Java 中观察目录的变化

    我想监视目录中的文件更改 我在java nio中使用了WatchService 我可以成功监听文件创建事件 但我无法监听文件修改事件 我检查了官方java教程 但仍在挣扎 这是源代码 import static java nio file
  • 防止范围内的项目写入不同用户的记录

    我在应用程序中有一个用户的场景中成功使用了 AngularFire 现在我已经启动并运行了身份验证 我注意到分配items to scope items切换用户时是灾难性的 主要是由于 scope无法正确更新 直接从文档中阅读 var re
  • 安卓蓝牙开启

    我正在开发一个蓝牙聊天应用程序 问题是 当我启用蓝牙时 应用程序启用蓝牙但会导致强制关闭 下次我启动相同的应用程序 启用蓝牙 时 它运行顺利 我已经搜索过 只得到一些信息 说当我启动启用蓝牙的意图时 代码会继续执行 而不等待意图的结果 pu
  • 如何将 `$this` 绑定到 PHP 函数?

    对于 JavaScript 我们可以执行这样的操作将作用域绑定到所需的函数 function myFunction alert this foo var MyClass function this foo 1 var c new MyCla
  • Flask:如何避免为特定 URL 生成任何类型的答案

    我正在为家庭自动化编程一个家庭网络服务器 我曾多次看到 机器人 扫描我的服务器端口 为了避免给不需要的扫描提供任何类型的活动标志 我试图避免为特定 URL 生成任何类型的答案 例如 即 为典型扫描的 URL 配置静默模式 我尝试过使用 vo
  • 函数的结果总是被初始化吗? [复制]

    这个问题在这里已经有答案了 可能的重复 Delphi中Result的默认值是多少 如同这个问题 我现在问以下问题 function Test Boolean begin end 是结果值always保证为假 0 整数值不是 布尔值也不是吗
  • 尝试加载 swf 文件时在 IE 中出现 c00ce514 错误

    我在 each 循环中有以下 ajax 调用 它从服务器加载多个 swf 文件 ajax url src a variable containing the url of the swf file success function succ
  • 如果单词在 pandas 的特定列中,如何获取一个片段出现的次数?

    我将尝试用一个简单的例子来描述我的问题 我有一个包含许多列的 csv 文件 该列的标题之一是 名称 在 名称 这一列中 我只需要重复名称 John 的次数 例如 我的 名称 列如下 names John John M Mike John A
  • 从独立应用程序轮询 GMail 收件箱中传入邮件的正确方法

    我正在尝试轮询 GMail 收件箱以获取传入邮件 这是我所拥有的 import java util Properties import javax mail Authenticator import javax mail Folder im
  • 如何比较大的 JSON?

    有 2 个通过代码从同一源创建的大 JSON GB 文件 它们的工作原理应该完全相同 但有时应该存在一些细微的差异 想要确保两次转换都完成了相同的工作并且正确 制作了一个小项目 将 JSON 转换为 CSV 类型 并包含元素及其内容 单值或
  • Haskell 猜牌游戏

    我正在编写一个猜牌游戏 用户设置答案并让电脑猜测 对于我的项目 输入卡号是2 然后 我需要编写猜牌算法 我已经创建了卡片模块 data Suit Club Diamond Heart Spade deriving Eq Ord Bounde
  • 如何将 xml 编码 添加到 SQL Server 中的 xml 输出

    可能是未答复的重复 SQL Server 2008 将 XML 声明添加到 XML 输出 请告诉我这是否可行 我在一些博客中读到 http forums asp net t 1455808 aspx 1 http www devnewsgr
  • 由yarn (MRv2) 或mapred (MRv1) 以外的用户提交时,Hadoop 作业会失败

    我正在运行一个与 LocalFileSystem 配对运行 MRv1 CDH5 的测试集群 并且我唯一能够运行作业的用户是 mapred 因为 mapred 是启动 jobtracker tasktracker 守护进程的用户 以任何其他用
  • 使用 Python 从 Excel 电子表格中读取 VBA

    我想用 最好是 Python 编写一个 VBA diff 程序 是否有一个 Python 库可以让我读取 Excel 电子表格中包含的 VBA 这里有一些快速但肮脏的样板文件可以帮助您入门 它使用 Excel COM 对象 仅限 Windo
  • 如何在 SCNShere 几何体上使用 SCNMaterial 的 Web 墨卡托投影图?

    我的应用程序中有一个简单的地球视图 之前我们使用 WhirlyGlobe 但现在选择使用 SceneKit 一切都很好 我们对此很满意 除了我们在 Whirly Globe 中使用了地图图块 而在 SceneKit 中不起作用 据我所知 我
  • 控制台应用程序的 C# 箭头键输入

    我有一个用 C 编写的简单控制台应用程序 我希望能够检测箭头键按下情况 这样我就可以允许用户进行转向 如何使用控制台应用程序检测 keydown keyup 事件 我所有的谷歌搜索都找到了有关 Windows 窗体的信息 我没有图形用户界面
  • 在 Python 中,按值对嵌套字典进行排序,并按另一个值对余数进行排序

    考虑这种字典格式 KEY1 name google date 20100701 downloads 0 KEY2 name chrome date 20071010 downloads 0 KEY3 name python date 201
  • dyn:evaluate 扩展函数在 Xalan-J 2.7.1 中是否存在问题?

    我很困惑为什么下面的示例程序拒绝正确应用我的样式表 看起来dyn evaluateXalan 2 7 1 中拒绝处理某些 XPath 变量 运行以下程序xalan j在类路径中产生以下结果 package com testing2 xslt