小编Eri*_*ric的帖子

使用XSL对属性进行排序

我试图通过按名称(而不是值)对每个元素的属性进行排序来规范化某些XML数据的表示.这个想法是在添加或删除属性时保持文本差异最小,并防止不同的编辑者引入等效变体.这些XML文件受源代码控制,开发人员希望在不使用专门的XML工具的情况下对这些更改进行区分.

我很惊讶没有找到如何做到这一点的XSL示例.基本上我只想要使用有序属性进行身份转换.我提出以下内容似乎适用于我的所有测试用例:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" encoding="UTF-8" indent="yes"/>
  <xsl:template match="*|/|text()|comment()|processing-instruction()">
    <xsl:copy>
    <xsl:for-each select="@*">
        <xsl:sort select="name(.)"/>
        <xsl:copy/>
      </xsl:for-each>
      <xsl:apply-templates/>
    </xsl:copy>
  </xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

作为一个总的XSL n00b,我将不胜感激任何关于风格或效率的评论.我认为在这里发布它可能会有所帮助,因为它似乎至少不是一个常见的例子.

sorting xslt attributes identity

10
推荐指数
1
解决办法
8510
查看次数

eclipse编译器或javac中的错误?

谁是对的?Eclipse还是javac?

--------------- c/v/A.java ---------------

package c.v;
public class A<T> {
}
Run Code Online (Sandbox Code Playgroud)

--------------- c/v/B.java ---------------

package c.v;
public class B extends A<B.Secret> {
  private class Secret {};
}
Run Code Online (Sandbox Code Playgroud)

Eclipse编译B.java就好了.

Javac有问题.

$ javac c/v/B.java
c/v/B.java:3: c.v.B.Secret has private access in c.v.B
public class B extends A<B.Secret> {
                           ^
    1 error

eclipse compiler-construction generics javac

7
推荐指数
2
解决办法
900
查看次数

Java避免在分层Builder模式中进行类强制转换警告

有没有办法避免在此分层Builder模式中进行未经检查的类转换?

public abstract class BaseBuilder <T, B extends BaseBuilder<T,B>> {

  public B setB1(String b1) {
    this.b1 = b1;
    return (B) this; // can I make this unchecked cast go away?
  }

  abstract public T build();

  String b1;
}
Run Code Online (Sandbox Code Playgroud)

不,答案不是:

return B.class.cast(this);
Run Code Online (Sandbox Code Playgroud)

是的,我知道我可以使用@SuppressWarnings

java generics

3
推荐指数
1
解决办法
1060
查看次数