小编Emi*_*ggi的帖子

Shell脚本和自动化指南

我目前正在研究一些脚本,这些脚本可以自动化很多东西并且中等大小.我已经开始关注某些事情,使我的脚本具有通用性和可移植性,如:

  • 管理员登录以安排脚本
  • 使用绝对路径
  • 使用配置文件
  • 在开发时使用write-host并在部署(调试)时切换到日志记录

我最感兴趣的是知道是否有任何标准的脚本技术和指南,旨在使脚本开发人员生活简单.我在perl和powershell上工作,所以更受欢迎和赞赏的是更广泛的建议.

在此先感谢您的帮助.
steeluser

shell powershell scripting perl

4
推荐指数
1
解决办法
1289
查看次数

如何使用模板遍历嵌套的XML结构

我是XSL的新手,并且正在从头开始解决问题。

我有一个包含以下结构的源XML文件:

<root>
  <Header>

  </Header>

  <DetailRecord>
    <CustomerNumber>1</CustomerNumber>
    <DetailSubRecord>
      <Address>London</Address>
    </DetailSubRecord>
    <DetailSubRecord>
      <Address>Hull</Address>
    </DetailSubRecord>

  </DetailRecord>

  <DetailRecord>
    <CustomerNumber>2</CustomerNumber>
    <DetailSubRecord>
      <Address>Birmingham</Address>
    </DetailSubRecord>
    <DetailSubRecord>
      <Address>Manchester</Address>
    </DetailSubRecord>

  </DetailRecord>
  <Footer>

  </Footer>

</root>
Run Code Online (Sandbox Code Playgroud)

其中有<DetailRecord>多个<DetailSubRecord>s ,其中有多个s。

我已经设法将一个XSL放到一个平面文件中,该XSL将一个嵌套的多个DetailRecords集输出到一个平面文件中,但是我一直不知道如何在XSL中引用地址记录的第二个嵌套级别。

到目前为止,这是我的XSL:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:strip-space elements="*"/>
  <xsl:output method="text"/>
  <xsl:variable name="spaces" select="' '"/>
  <xsl:variable name="newline">
    <xsl:text>&#10;</xsl:text>
  </xsl:variable>
  <xsl:template match="/">
    <xsl:value-of select="root/Header/HeaderField"/>
    <xsl:copy-of select="$newline"/>
    <xsl:for-each select="root/DetailRecord">
      <xsl:value-of select="CustomerNumber"/>
      <xsl:copy-of select="$newline"/>
    </xsl:for-each>
    Trailer - recordCount - <xsl:value-of select="count(root/DetailRecord)"/>
  </xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

xml xslt nested

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

如何从Ruby 1.8或1.9调用Java API

我有这个JRuby 工作代码(从Keith的博客中窃取),它包装了SAXON xslt处理器API.

现在,我想知道我是否可以,如何在Ruby框架中包装相同的API?

请告诉我这个问题是否无意义或是否可以某种方式改进.

这是所需API的java doc参考.

这是我正在使用的JRuby代码:

require 'java'
module JXslt
  include_class "javax.xml.transform.TransformerFactory"
  include_class "javax.xml.transform.Transformer"
  include_class "javax.xml.transform.stream.StreamSource"
  include_class "javax.xml.transform.stream.StreamResult"
  include_class "java.lang.System"

  class XsltProcessor
    def transform(xslt,infile,outfile)
      transformer = @tf.newTransformer(StreamSource.new(xslt))
      transformer.transform(StreamSource.new(infile), StreamResult.new(outfile))
    end
  end # XsltProcessor
  class Saxon < XsltProcessor
    TRANSFORMER_FACTORY_IMPL = "net.sf.saxon.TransformerFactoryImpl"
    def initialize
      System.setProperty("javax.xml.transform.TransformerFactory", TRANSFORMER_FACTORY_IMPL)
      @tf = TransformerFactory.newInstance
    end
  end
end 
Run Code Online (Sandbox Code Playgroud)

ruby api saxon jruby

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

使用xslt迭代属性

我有一个xml数据,如下所示.

<Roll NO="4620" CLASSNO="0" ID="0" DID="0" REVSN="0" DNO="3" ></Roll>
<Roll NO="4630" CLASSNO="0" ID="0" DID="0" REVSN="0" DNO="3"></Roll>
Run Code Online (Sandbox Code Playgroud)

我想迭代遍历属性而不使用XSLT指定名称.有办法吗?

xml xslt xpath

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

如何处理XML命名空间

我有一种感觉,这个问题很简单,但是自从我做了任何xslt以来可能有多年,所以也许有人可以提供帮助?

我有一块由.net类DataContractSerializer生成的xml,我需要使用xslt从这个xml中提取数据,最后得到一些html.对我来说复杂的事情是命名空间的大量使用......

xml的片段如下所示:

<FundDeal xmlns:i="http://www.w3.org/2001/XMLSchema-instance"  xmlns="http://schemas.datacontract.org/2004/07/Guide.Rx.BusinessObjects.Deal">
    <Id xmlns="http://schemas.datacontract.org/2004/07/Guide.BusinessObjects.Deal">DEAL12345</Id>
    <Account xmlns:d2p1="http://schemas.datacontract.org/2004/07/Guide.Rx.BusinessObjects.Account">
        <d2p1:AlternateId i:nil="true"/>
        <d2p1:Designation>XXX</d2p1:Designation>
        <d2p1:Name>QWERTY</d2p1:Name>
        <d2p1:Number>12345678</d2p1:Number>
        <d2p1:Status i:nil="true"/>
    </Account>
    <Agent xmlns:d2p1="http://schemas.datacontract.org/2004/07/Guide.Rx.BusinessObjects.Account">
        <d2p1:Id>54321</d2p1:Id>
        <d2p1:Name>ASDFG</d2p1:Name>
        <d2p1:Status>Active</d2p1:Status>
    </Agent>
    ....
</FundDeal>
Run Code Online (Sandbox Code Playgroud)

现在,我需要通过样式表来转换这个xml,并且发现它非常艰难.我认识到xsl需要它自己对所涉及的命名空间的引用,并且可以使用以下xsl轻松地提取上面的Deal Id之类的内容:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:ms="urn:schemas-microsoft-com:xslt"
    xmlns:grbd="http://schemas.datacontract.org/2004/07/Guide.Rx.BusinessObjects.Deal"
    xmlns:gbd="http://schemas.datacontract.org/2004/07/Guide.BusinessObjects.Deal"
    xmlns:grba="http://schemas.datacontract.org/2004/07/Guide.Rx.BusinessObjects.Account">
    <xsl:output indent="yes" omit-xml-declaration="yes" method="html"/>
    <xsl:template match="/">
      <html>
        <head>
          <!-- some styles here -->
        </head>
        <body>
          <table cellpadding="5" cellspacing="5" border="0">
            <tr>
              <td class="SectionTitle" colspan="2">
                <xsl:text>Deal Cancellation Notification - </xsl:text>
                <xsl:value-of select="//ggbd:Id"/>
              </td>
            </tr>
          </table>
        </body>
      </html>
    </xsl:template>
</xsl:stylesheet>   
Run Code Online (Sandbox Code Playgroud)

但我正在努力阅读诸如帐户名之类的内容,因为似乎有多个名称空间正在进行中.

任何人都可以告诉我访问的xpath(a)帐户名称,以及(b)代理商名称?我认为看到如何访问这些将可能允许我访问我需要的一切.

非常感谢,皮特

xml xslt namespaces transform xml-namespaces

2
推荐指数
1
解决办法
1173
查看次数

如何打开然后使用PowerShell关闭"设备和打印机"文件夹?

所以我正在写一个PowerShell脚本来安装我办公室里的所有打印机.

但首先,我希望它打开设备和打印机文件夹.然后,在安装所有打印机之后,我希望它关闭该文件夹.

当我进入控制面板时,我可以在桌面上创建设备和打印机的快捷方式.lnk指向"控制面板\硬件和声音\设备和打印机".

有没有人对如何做到这一点有任何想法?

powershell controls panel

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

散列 - 嵌套遍历 - Ruby - (任何人都知道这个)

我有这个哈希

hasha = {"a" => "b","a_a" => {"x_y" => "sreeraj","a_b" => "hereIam"}}
Run Code Online (Sandbox Code Playgroud)

我需要改变它

hasha = {"a" => "b","a-a" => {"x-y" => "sreeraj","a-b" => "hereIam"}}
Run Code Online (Sandbox Code Playgroud)

即我需要将包含"_"(下划线)的所有键更改为"-"(减号).我怎样才能做到这一点?

ruby hash ruby-on-rails

0
推荐指数
1
解决办法
211
查看次数