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 中是否存在问题? 的相关文章

  • 在画布上绘图

    我正在编写一个 Android 应用程序 它可以在视图的 onDraw 事件上直接绘制到画布上 我正在绘制一些涉及单独绘制每个像素的东西 为此我使用类似的东西 for int x 0 x lt xMax x for int y 0 y lt
  • Java - 将节点添加到列表的末尾?

    这是我所拥有的 public class Node Object data Node next Node Object data Node next this data data this next next public Object g
  • 使用 XPATH(和 PHP)从样式属性中选择背景 url

    我只想从此背景图像样式属性中选择 url 这可以通过 XPATH 实现吗 a href http www test com style background image none test a 我有类似的东西 url xpath gt qu
  • 如何找到给定字符串的最长重复子串

    我是java新手 我被分配寻找字符串的最长子字符串 我在网上研究 似乎解决这个问题的好方法是实现后缀树 请告诉我如何做到这一点或者您是否有任何其他解决方案 请记住 这应该是在 Java 知识水平较低的情况下完成的 提前致谢 附 测试仪字符串
  • 在 HTTPResponse Android 中跟踪重定向

    我需要遵循 HTTPost 给我的重定向 当我发出 HTTP post 并尝试读取响应时 我得到重定向页面 html 我怎样才能解决这个问题 代码 public void parseDoc final HttpParams params n
  • 无法展开 RemoteViews - 错误通知

    最近 我收到越来越多的用户收到 RemoteServiceException 错误的报告 我每次给出的堆栈跟踪如下 android app RemoteServiceException Bad notification posted fro
  • Spark 1.3.1 上的 Apache Phoenix(4.3.1 和 4.4.0-HBase-0.98)ClassNotFoundException

    我正在尝试通过 Spark 连接到 Phoenix 并且在通过 JDBC 驱动程序打开连接时不断收到以下异常 为简洁起见 下面是完整的堆栈跟踪 Caused by java lang ClassNotFoundException org a
  • Spring Data JPA 应用排序、分页以及 where 子句

    我目前正在使用 Spring JPA 并利用此处所述的排序和分页 如何通过Spring data JPA通过排序和可分页查询数据 https stackoverflow com questions 10527124 how to query
  • Spring @RequestMapping 带有可选参数

    我的控制器在请求映射中存在可选参数的问题 请查看下面的控制器 GetMapping produces MediaType APPLICATION JSON VALUE public ResponseEntity
  • 斯坦福 NLP - 处理文件列表时 OpenIE 内存不足

    我正在尝试使用斯坦福 CoreNLP 中的 OpenIE 工具从多个文件中提取信息 当多个文件 而不是一个 传递到输入时 它会给出内存不足错误 All files have been queued awaiting termination
  • 禁止的软件包名称:java

    我尝试从数据库名称为 jaane 用户名 Hello 和密码 hello 获取数据 错误 java lang SecurityException Prohibited package name java at java lang Class
  • 从 127.0.0.1 到 2130706433,然后再返回

    使用标准 Java 库 从 IPV4 地址的点分字符串表示形式获取的最快方法是什么 127 0 0 1 到等效的整数表示 2130706433 相应地 反转所述操作的最快方法是什么 从整数开始2130706433到字符串表示形式 127 0
  • Java TestNG 与跨多个测试的数据驱动测试

    我正在电子商务平台中测试一系列商店 每个商店都有一系列属性 我正在考虑对其进行自动化测试 是否有可能有一个数据提供者在整个测试套件中提供数据 而不仅仅是 TestNG 中的测试 我尝试不使用 testNG xml 文件作为机制 因为这些属性
  • 为什么HashMap不能保证map的顺序随着时间的推移保持不变

    我在这里阅读有关 Hashmap 和 Hashtable 之间的区别 http javarevisited blogspot sg 2010 10 difference Between hashmap and html http javar
  • 如何在 javadoc 中使用“<”和“>”而不进行格式化?

    如果我写
  • 如何在控制器、服务和存储库模式中使用 DTO

    我正在遵循控制器 服务和存储库模式 我只是想知道 DTO 在哪里出现 控制器应该只接收 DTO 吗 我的理解是您不希望外界了解底层域模型 从领域模型到 DTO 的转换应该发生在控制器层还是服务层 在今天使用 Spring MVC 和交互式
  • Java执行器服务线程池[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如果我使用 Executor 框架在
  • Google App Engine 如何预编译 Java?

    App Engine 对应用程序的 Java 字节码使用 预编译 过程 以增强应用程序在 Java 运行时环境中的性能 预编译代码的功能与原始字节码相同 有没有详细的信息这是做什么的 我在一个中找到了这个谷歌群组消息 http groups
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分
  • 使用 JMF 创建 RTP 流时出现问题

    我正处于一个项目的早期阶段 需要使用 RTP 广播DataStream创建自MediaLocation 我正在遵循一些示例代码 该代码目前在rptManager initalize localAddress 出现错误 无法打开本地数据端口

随机推荐

  • 用户集合中所有用户的列表第一次使用 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