Support for link:languages.html[other languages] inside the Scala DSL
routes is delivered through traits. The
`org.apache.camel.scala.dsl.languages` package currently offers traits
to support XPath. To use any given language, you can mix-in the trait
when creating your `RouteBuilder`.

You can use any of the supported Camel link:languages.html[Languages] in
the link:scala-dsl.html[Scala DSL]; see below for a couple of examples:

[[ScalaDSL-Supportedlanguages-Using]]
Using link:xpath.html[XPath]
++++++++++++++++++++++++++++

With the XPath trait, you have an additional method available on an
`Exchange` to do XPath queries against the message. Just look at this
Splitter example, where the `xpath` method is used in a
`Exchange ⇒ Any*` function literal

[source,java]
----------------------------------------------------------
"direct:b" ==> {
  as(classOf[Document])
  split(xpath("/persons/person")) {
    to("mock:b")
    to("mock:c")
  }
}
----------------------------------------------------------

[[ScalaDSL-Supportedlanguages-Using.1]]
Using link:jxpath.html[JXPath]
++++++++++++++++++++++++++++++

With the `org.apache.camel.scala.dsl.languages.JXPath` trait, you can an
additional `jxpath` method on the `Exchange`. In the Recipient List
example below, JXPath is used for getting the next endpoint's name out
of the message body.

[source,java]
----------------------------------------------------------
"direct:c" ==> {
  to("mock:c")
  recipients(jxpath("./in/body/destination"))
}
----------------------------------------------------------
