导航:首页 > 编程语言 > javaxsl

javaxsl

发布时间:2022-07-19 22:14:35

java与xsl样式表

XSL提供两种机制来联合样式表:

1.样式表导入,允许样式表之间相互引用
2.样式表包含,允许样式表被原文组合.

样式表导入
一个XSL样式表可以包含xsl:import元素.所有xsl:import元素必须出现在样式表的开头. xsl:import元素有一个 href 属性,它的值就表示要导入的样式表的URI. 相对URI是指相对于xsl:import元素的基URI.

<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:import href="article.xsl"/>
<xsl:import href="bigfont.xsl"/>
<xsl:define-attribute-set name="note-style">
<xsl:attribute-set font-posture="italic"/>
</xsl:define-attribute-set>
</xsl:stylesheet>

导向的样式表中的规则和定义比任何被导入样式表中的规则和定义都要重要.同样,一被导入的样式表中的规则和定义比之前导入的样式表中的规则和定义都要重要.一般来说,更重要的规则或定义比次重要的规则或定义要优先.每一类的规则和定义都会详细规定它.

样式表包含
一个样式表中可以用xsl:include元素来包含另一个XSL样式表. xsl:include也有href 属性,它的值就表示被包含的样式表的URI. 相对URI是指相对于xsl:include元素的基URI. xsl:include元素可以作为xsl:stylesheet元素的子元素,出现在任何xsl:import之后.在XML树的层次在上该包含生效.由href属性值定位的资源内容作为一个XML文档解析,在该文档中的xsl:stylesheet元素的子元素替代包含文档的xsl:include元素.同时在被包含的文档的xsl:import元素在包含文档中移上至任一存在的xsl:import元素之后. 不象xsl:import,被包含的规则或定义不影响他们被处理的方式.

嵌入样式表
通常一个样式表就是一个完整的XML文档,xsl:stylesheet元素作为文档的元素. 然而一个XSL样式表也可以嵌入在其它文档内容之中.内嵌的方式可能有两种:XSL样式表可以原文嵌入在一个非XML文档中或者xsl:stylesheet不作为文档元素出现在一个XML文档中.在第二种情况增加了出现内嵌样式,即自己规定样式的文档的可能. XSL还没有为之定义相应的机制.这是由于可以采用把样式表结合文档的通用方式来实现,只要满足:

1. 该方式允许一部分内容可以规定为样式表,例如使用有片段标识符URI
2. 该方式本身能被嵌入在文档中, 比如作为一个处理指令.定义这样的方式不在XSL的范围之内.

下例表明了怎样用xml:stylesheet处理指令将样式表和文档结合来实现内嵌样式. 其中的URI在片段标识符中使用了一个Xpointer来确定xsl:stylesheet元素的位置.

<?xml version="1.0"?>
<?xml:stylesheet type="text/xsl" href="#id(style1)"?>
<!DOCTYPE doc SYSTEM "doc.dtd">
<doc>
<head>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl" id="style1">
<xsl:import href="doc.xsl"/>
<xsl:template match="id(foo)">
<fo:block font-weight="bold"><xsl:process-children/></fo:block>
</xsl:template>
</xsl:stylesheet>
</head>
<body>

<para id="foo">
...
</para>

</body>
</doc>

⑵ java web工程里xml+xsl路径问题

写全路径/files/xsl/xxxx
或者相对路径/xsl/xxxx

⑶ java用xsl实现了xml文件有样式的展现,火狐和ie有样式,为什么chrome直接将xml文件下载了

chrome这点比较渣。

⑷ java怎么读取excel文件

参考代码及注释如下:

importJava.io.File;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.IOException;
importjava.io.InputStream;

importorg.apache.poi.hssf.usermodel.HSSFWorkbook;
importorg.apache.poi.ss.usermodel.Cell;
importorg.apache.poi.ss.usermodel.Row;
importorg.apache.poi.ss.usermodel.Sheet;
importorg.apache.poi.ss.usermodel.Workbook;
publicclassReadExcel{
publicstaticvoidreadExcel(Filefile){
try{
InputStreaminputStream=newFileInputStream(file);
StringfileName=file.getName();
Workbookwb=null;
//poi-3.9.jar只可以读取2007以下的版本,后缀为:xsl
wb=newHSSFWorkbook(inputStream);//解析xls格式

Sheetsheet=wb.getSheetAt(0);//第一个工作表,第二个则为1,以此类推...

intfirstRowIndex=sheet.getFirstRowNum();
intlastRowIndex=sheet.getLastRowNum();
for(intrIndex=firstRowIndex;rIndex<=lastRowIndex;rIndex++){
Rowrow=sheet.getRow(rIndex);
if(row!=null){
intfirstCellIndex=row.getFirstCellNum();
//intlastCellIndex=row.getLastCellNum();
//此处参数cIndex决定可以取到excel的列数。
for(intcIndex=firstCellIndex;cIndex<3;cIndex++){
Cellcell=row.getCell(cIndex);
Stringvalue="";
if(cell!=null){
value=cell.toString();
System.out.print(value+" ");
}
}
System.out.println();
}
}
}catch(FileNotFoundExceptione){
//TODO自动生成catch块
e.printStackTrace();
}catch(IOExceptione){
//TODO自动生成catch块
e.printStackTrace();
}
}
publicstaticvoidmain(String[]args){
Filefile=newFile("D:/test.xls");
readExcel(file);
}
}

⑸ java开发中xsl还常用么

常用啊,可以把excel作为小型的数据库的。

⑹ java中怎么读取excel文件

package com.jqgj.test;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.io.FilenameUtils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellValue;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.ss.usermodel.FormulaEvaluator;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ImportNameTest {
/**
* Excel 2003
*/
private final static String XLS = "xls";
/**
* Excel 2007
*/
private final static String XLSX = "xlsx";
/**
* 分隔符
*/
private final static String SEPARATOR = "|";

/**
* 由Excel文件的Sheet导出至List
*
* @param file
* @param sheetNum
* @return
*/
public static List<String> exportListFromExcel(File file, int sheetNum)
throws IOException {
return exportListFromExcel(new FileInputStream(file),
FilenameUtils.getExtension(file.getName()), sheetNum);
}
/**
* 由Excel流的Sheet导出至List
*
* @param is
* @param extensionName
* @param sheetNum
* @return
* @throws IOException
*/
public static List<String> exportListFromExcel(InputStream is,
String extensionName, int sheetNum) throws IOException {

Workbook workbook = null;

if (extensionName.toLowerCase().equals(XLS)) {
workbook = new HSSFWorkbook(is);
} else if (extensionName.toLowerCase().equals(XLSX)) {
workbook = new XSSFWorkbook(is);
}

return exportListFromExcel(workbook, sheetNum);
}
/**
* 由指定的Sheet导出至List
*
* @param workbook
* @param sheetNum
* @return
* @throws IOException
*/
private static List<String> exportListFromExcel(Workbook workbook,
int sheetNum) {

Sheet sheet = workbook.getSheetAt(sheetNum);

// 解析公式结果
FormulaEvaluator evaluator = workbook.getCreationHelper()
.createFormulaEvaluator();

List<String> list = new ArrayList<String>();

int minRowIx = sheet.getFirstRowNum();
int maxRowIx = sheet.getLastRowNum();
for (int rowIx = minRowIx; rowIx <= maxRowIx; rowIx++) {
Row row = sheet.getRow(rowIx);
StringBuilder sb = new StringBuilder();

short minColIx = row.getFirstCellNum();
short maxColIx = row.getLastCellNum();
for (short colIx = minColIx; colIx <= maxColIx; colIx++) {
Cell cell = row.getCell(new Integer(colIx));
CellValue cellValue = evaluator.evaluate(cell);
if (cellValue == null) {
continue;
}
// 经过公式解析,最后只存在Boolean、Numeric和String三种数据类型,此外就是Error了
// 其余数据类型,根据官方文档,完全可以忽略http://poi.apache.org/spreadsheet/eval.html
switch (cellValue.getCellType()) {
case Cell.CELL_TYPE_BOOLEAN:
sb.append(SEPARATOR + cellValue.getBooleanValue());
break;
case Cell.CELL_TYPE_NUMERIC:
// 这里的日期类型会被转换为数字类型,需要判别后区分处理
if (DateUtil.isCellDateFormatted(cell)) {
sb.append(SEPARATOR + cell.getDateCellValue());
} else {
//把手机号码转换为字符串
DecimalFormat df = new DecimalFormat("#");
sb.append(SEPARATOR + df.format(cellValue.getNumberValue()));
}
break;
case Cell.CELL_TYPE_STRING:
sb.append(SEPARATOR + cellValue.getStringValue());
break;
case Cell.CELL_TYPE_FORMULA:
break;
case Cell.CELL_TYPE_BLANK:
break;
case Cell.CELL_TYPE_ERROR:
break;
default:
break;
}
}
list.add(sb.toString());
}
return list;
}

/**
* @param args
*/
public static void main(String[] args) {
String path = "f:\\telName.xlsx";
try {
List<String> listS= exportListFromExcel(new File(path),0);
for(int i=0;i<listS.size();i++){
System.out.println(listS.get(i));
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

}

阅读全文

与javaxsl相关的资料

热点内容
如何让服务器运行缓慢 浏览:238
黑马程序员入学流程 浏览:448
win732位安装python什么版本 浏览:786
压缩方式标准 浏览:558
免费低吸指标源码 浏览:182
MO命令是 浏览:46
python入门常见错误 浏览:410
改加密包名 浏览:785
程序员在线编译器 浏览:247
山东兼职程序员收费标准 浏览:424
物业管理系统项目java源码 浏览:14
林皋pdf 浏览:586
vue编译后命名 浏览:731
可以发布命令的 浏览:954
安卓系统如何领取国旗 浏览:330
chromium编译linux 浏览:471
exe在线反编译工具 浏览:367
imbatest命令 浏览:410
android自动连接指定wifi 浏览:491
用纸做超简单又解压的东西 浏览:596