Search in sources :

Example 1 with XQConnection

use of javax.xml.xquery.XQConnection in project translationstudio8 by heartsome.

the class SaxonSearcher method PropagateQurey.

/**
	 * 繁殖翻译文本段的查询 robert 2012-04-03
	 * @param queryString
	 *            XQuery查询语句
	 * @return RowId集合
	 * @throws XQException
	 *             ;
	 */
public static Map<String, List<String>> PropagateQurey(String queryString) throws XQException {
    XQDataSource dataSource = new SaxonXQDataSource();
    XQConnection conn = null;
    XQExpression expression = null;
    XQSequence results = null;
    try {
        conn = dataSource.getConnection();
        expression = conn.createExpression();
        results = expression.executeQuery(queryString);
        Map<String, List<String>> resultMap = new HashMap<String, List<String>>();
        while (results.next()) {
            Node node = results.getNode();
            //				System.out.println("node.getChildNodes().getLength() = " + node.getChildNodes().getLength());
            if (node.getChildNodes().getLength() >= 1) {
                String rootFileName = node.getAttributes().getNamedItem("fileName").getNodeValue();
                rootFileName = new File(rootFileName).getAbsolutePath();
                String rootOriginal = node.getAttributes().getNamedItem("original").getNodeValue();
                String rootTuid = node.getAttributes().getNamedItem("tuid").getNodeValue();
                String rootRowId = RowIdUtil.getRowId(rootFileName, rootOriginal, rootTuid);
                if (!resultMap.keySet().contains(rootRowId)) {
                    resultMap.put(rootRowId, new ArrayList<String>());
                }
                NodeList nodeList = node.getChildNodes();
                for (int i = 0; i < nodeList.getLength(); i++) {
                    if (nodeList.item(i).getAttributes() == null) {
                        continue;
                    }
                    String fileName = nodeList.item(i).getAttributes().getNamedItem("fileName").getNodeValue();
                    fileName = new File(fileName).getAbsolutePath();
                    String original = nodeList.item(i).getAttributes().getNamedItem("original").getNodeValue();
                    String tuid = nodeList.item(i).getAttributes().getNamedItem("tuid").getNodeValue();
                    String rowId = RowIdUtil.getRowId(fileName, original, tuid);
                    resultMap.get(rootRowId).add(rowId);
                }
            }
        }
        return resultMap;
    } finally {
        // 释放资源
        if (results != null && !results.isClosed()) {
            results.close();
        }
        if (expression != null && !expression.isClosed()) {
            expression.close();
        }
        if (conn != null && !conn.isClosed()) {
            conn.close();
        }
    }
}
Also used : HashMap(java.util.HashMap) SaxonXQDataSource(net.sf.saxon.xqj.SaxonXQDataSource) Node(org.w3c.dom.Node) NodeList(org.w3c.dom.NodeList) SaxonXQDataSource(net.sf.saxon.xqj.SaxonXQDataSource) XQDataSource(javax.xml.xquery.XQDataSource) XQSequence(javax.xml.xquery.XQSequence) XQExpression(javax.xml.xquery.XQExpression) XQConnection(javax.xml.xquery.XQConnection) NodeList(org.w3c.dom.NodeList) ArrayList(java.util.ArrayList) List(java.util.List) File(java.io.File)

Example 2 with XQConnection

use of javax.xml.xquery.XQConnection in project translationstudio8 by heartsome.

the class SaxonSearcher method sort.

public static ArrayList<String> sort(String xmlns, String fileName, String elementName, boolean isAsc) throws XQException {
    URI uri = new File(fileName).toURI();
    String uriPath = uri.getPath();
    ArrayList<String> rowIds = new ArrayList<String>();
    XQDataSource dataSource = new SaxonXQDataSource();
    XQConnection conn = dataSource.getConnection();
    String queryString = "for $file in doc(\'" + uriPath + "')/xliff/file," + " $tu in $file/body//trans-unit order by $tu/" + elementName + " " + (isAsc ? "" : "descending") + " return <file original='{$file/@original}' tuid='{$tu/@id}'></file>";
    if (xmlns != null) {
        queryString = "declare default element namespace '" + xmlns + "';" + queryString;
    }
    XQExpression expression = conn.createExpression();
    XQSequence results = expression.executeQuery(queryString);
    while (results.next()) {
        Node node = results.getNode();
        String original = node.getAttributes().getNamedItem("original").getNodeValue();
        String tuid = node.getAttributes().getNamedItem("tuid").getNodeValue();
        String rowId = RowIdUtil.getRowId(fileName, original, tuid);
        rowIds.add(rowId);
    }
    // 释放资源
    results.close();
    expression.close();
    conn.close();
    return rowIds;
}
Also used : XQConnection(javax.xml.xquery.XQConnection) SaxonXQDataSource(net.sf.saxon.xqj.SaxonXQDataSource) Node(org.w3c.dom.Node) ArrayList(java.util.ArrayList) SaxonXQDataSource(net.sf.saxon.xqj.SaxonXQDataSource) XQDataSource(javax.xml.xquery.XQDataSource) XQSequence(javax.xml.xquery.XQSequence) XQExpression(javax.xml.xquery.XQExpression) URI(java.net.URI) File(java.io.File)

Example 3 with XQConnection

use of javax.xml.xquery.XQConnection in project translationstudio8 by heartsome.

the class SaxonSearcher method qurey.

/**
	 * 查询
	 * @param queryString 
	 * 			  XQuery查询语句
	 * @return	  RowId集合
	 * @throws XQException ;
	 */
private static ArrayList<String> qurey(String queryString) throws XQException {
    XQDataSource dataSource = new SaxonXQDataSource();
    XQConnection conn = null;
    XQExpression expression = null;
    XQSequence results = null;
    try {
        conn = dataSource.getConnection();
        expression = conn.createExpression();
        results = expression.executeQuery(queryString);
        LinkedHashSet<String> set = new LinkedHashSet<String>();
        while (results.next()) {
            Node node = results.getNode();
            String fileName = node.getAttributes().getNamedItem("fileName").getNodeValue();
            String original = node.getAttributes().getNamedItem("original").getNodeValue();
            String tuid = node.getAttributes().getNamedItem("tuid").getNodeValue();
            // 解决 Windows 平台下,无法查询“重复文本段”的问题“:
            // 这里返回的是 URI,因此需要转成操作系统的标准文件路径。
            // 注:在 Winodws 平台中文件路径分隔符使用“\”,而在 URI 标准中文件路径分隔符使用“/”,并且会以“/”为根,
            //    因此,Windows 的路径“c:\test.txt”,使用 URI 表示为“/c:/test.txt”。
            fileName = new File(fileName).getAbsolutePath();
            String rowId = RowIdUtil.getRowId(fileName, original, tuid);
            set.add(rowId);
        }
        return new ArrayList<String>(set);
    } finally {
        // 释放资源
        if (results != null && !results.isClosed()) {
            results.close();
        }
        if (expression != null && !expression.isClosed()) {
            expression.close();
        }
        if (conn != null && !conn.isClosed()) {
            conn.close();
        }
    }
}
Also used : LinkedHashSet(java.util.LinkedHashSet) XQConnection(javax.xml.xquery.XQConnection) SaxonXQDataSource(net.sf.saxon.xqj.SaxonXQDataSource) Node(org.w3c.dom.Node) ArrayList(java.util.ArrayList) SaxonXQDataSource(net.sf.saxon.xqj.SaxonXQDataSource) XQDataSource(javax.xml.xquery.XQDataSource) XQSequence(javax.xml.xquery.XQSequence) XQExpression(javax.xml.xquery.XQExpression) File(java.io.File)

Example 4 with XQConnection

use of javax.xml.xquery.XQConnection in project translationstudio8 by heartsome.

the class SaxonSearcher method testRpeateed.

/**
	 * 测试过滤重复文本段	robert	2012-06-11
	 * @throws XQException 
	 */
private static void testRpeateed() throws XQException {
    String xqueryStr_1 = "declare namespace ns0='urn:oasis:names:tc:xliff:document:1.2'; " + "for $t in (let $allTU_1 := ( " + "	for $file0 in doc('/home/robert/workspace/runtime-UltimateEdition.product/test/XLIFF/zh-CN/user_defineed_filter4.doc.xlf')/ns0:xliff/ns0:file[upper-case(@source-language)='EN-US' " + "		and upper-case(@target-language)='ZH-CN'], " + "	$tu0 in $file0/ns0:body//ns0:trans-unit " + "		return <tu fileName='/home/robert/workspace/runtime-UltimateEdition.product/test/XLIFF/zh-CN/user_defineed_filter4.doc.xlf' original='{$file0/@original}' tuid='{$tu0/@id}' source='{$tu0/ns0:source/text()}' />), " + "	$allTU := for $allTU1 in $allTU_1  return <tu fileName='{$allTU1/@fileName}'  original='{$allTU1/@original}'  tuid='{$allTU1/@tuid}'  source='{normalize-space($allTU1/@source)}' /> ," + "	$id := (for $src in distinct-values($allTU/@source) " + "		return <root>{if (count($allTU[@source=$src])>1) then <src>{$src}</src> else ''}</root>)/src/text(), " + "	$tu := $allTU[@source=$id] return $tu) order by $t/@source " + "		return <tu fileName='{$t/@fileName}' original='{$t/@original}' tuid='{$t/@tuid}' /> ";
    String xqueryStr = "declare namespace ns0='urn:oasis:names:tc:xliff:document:1.2'; \n" + "declare function local:getPureText ($srcText1 as xs:anyType) as xs:anyType {\n" + "let $result := srcText1 \n" + "return  $result };  \n" + "for $t in (let $allTU := ( \n" + "	for $file0 in doc('/home/robert/workspace/runtime-UltimateEdition.product/test/XLIFF/zh-CN/user_defineed_filter4.doc.xlf')/ns0:xliff/ns0:file[upper-case(@source-language)='EN-US'  \n" + "		and upper-case(@target-language)='ZH-CN'],  \n" + "	$tu0 in $file0/ns0:body//ns0:trans-unit  \n" + "		return <tu fileName='/home/robert/workspace/runtime-UltimateEdition.product/test/XLIFF/zh-CN/user_defineed_filter4.doc.xlf' original='{$file0/@original}' tuid='{$tu0/@id}' source='{$tu0/ns0:source/text()}' />) \n" + " 	return $allTU )\n " + "	return <tu fileName='{$t/@fileName}' original='{$t/@original}' tuid='{$t/@tuid}' source='{$t/@source}'/>  \n";
    XQDataSource dataSource = new SaxonXQDataSource();
    XQConnection conn = null;
    XQExpression expression = null;
    XQSequence results = null;
    try {
        conn = dataSource.getConnection();
        expression = conn.createExpression();
        results = expression.executeQuery(xqueryStr);
        while (results.next()) {
            Node node = results.getNode();
            String fileName = node.getAttributes().getNamedItem("fileName").getNodeValue();
            String original = node.getAttributes().getNamedItem("original").getNodeValue();
            String tuid = node.getAttributes().getNamedItem("tuid").getNodeValue();
            String source = node.getAttributes().getNamedItem("source").getNodeValue();
            System.out.println(source);
        //				System.out.println(tuid);
        }
        return;
    } finally {
        // 释放资源
        if (results != null && !results.isClosed()) {
            results.close();
        }
        if (expression != null && !expression.isClosed()) {
            expression.close();
        }
        if (conn != null && !conn.isClosed()) {
            conn.close();
        }
    }
}
Also used : XQConnection(javax.xml.xquery.XQConnection) SaxonXQDataSource(net.sf.saxon.xqj.SaxonXQDataSource) Node(org.w3c.dom.Node) SaxonXQDataSource(net.sf.saxon.xqj.SaxonXQDataSource) XQDataSource(javax.xml.xquery.XQDataSource) XQSequence(javax.xml.xquery.XQSequence) XQExpression(javax.xml.xquery.XQExpression)

Aggregations

XQConnection (javax.xml.xquery.XQConnection)4 XQDataSource (javax.xml.xquery.XQDataSource)4 XQExpression (javax.xml.xquery.XQExpression)4 XQSequence (javax.xml.xquery.XQSequence)4 SaxonXQDataSource (net.sf.saxon.xqj.SaxonXQDataSource)4 Node (org.w3c.dom.Node)4 File (java.io.File)3 ArrayList (java.util.ArrayList)3 URI (java.net.URI)1 HashMap (java.util.HashMap)1 LinkedHashSet (java.util.LinkedHashSet)1 List (java.util.List)1 NodeList (org.w3c.dom.NodeList)1